From 988eeacbd87a376c59ef9ad918c578d85c2856f0 Mon Sep 17 00:00:00 2001 From: Rickard Andersson Date: Fri, 14 Oct 2022 19:32:01 +0300 Subject: [PATCH 1/7] fix(kt): output trailing newline in kotlin files --- src/CodeGeneration/Kotlin.hs | 2 +- test/ParsingSpec.hs | 24 +++++++++++++++++++++--- test/reference-output/basic.kt | 2 +- test/reference-output/basicStruct.kt | 13 +++++++++++++ test/reference-output/generics.kt | 2 +- test/reference-output/github.kt | 2 +- test/reference-output/hasGeneric.kt | 2 +- test/reference-output/importExample.kt | 2 +- 8 files changed, 40 insertions(+), 9 deletions(-) create mode 100644 test/reference-output/basicStruct.kt diff --git a/src/CodeGeneration/Kotlin.hs b/src/CodeGeneration/Kotlin.hs index a2040f5..4ec458a 100644 --- a/src/CodeGeneration/Kotlin.hs +++ b/src/CodeGeneration/Kotlin.hs @@ -50,7 +50,7 @@ outputModule module' = moduleClassOutput, definitionOutput, "\n", - "}" + "}\n" ] modulePrelude :: Text diff --git a/test/ParsingSpec.hs b/test/ParsingSpec.hs index c64e837..0363c7f 100644 --- a/test/ParsingSpec.hs +++ b/test/ParsingSpec.hs @@ -50,7 +50,8 @@ data PythonReferenceOutput = PythonReferenceOutput } data KotlinReferenceOutput = KotlinReferenceOutput - { basic :: !Text, + { basicStruct :: !Text, + basic :: !Text, import' :: !Text, hasGeneric :: !Text, generics :: !Text, @@ -121,12 +122,21 @@ fSharpReferenceOutput = do kotlinReferenceOutput :: IO KotlinReferenceOutput kotlinReferenceOutput = do + basicStruct <- basicStructReferenceOutput "kt" basic <- basicReferenceOutput "kt" import' <- importReferenceOutput "kt" hasGeneric <- hasGenericReferenceOutput "kt" generics <- genericsReferenceOutput "kt" gitHub <- gitHubReferenceOutput "kt" - pure KotlinReferenceOutput {basic, import', hasGeneric, generics, gitHub} + pure + KotlinReferenceOutput + { basicStruct, + basic, + import', + hasGeneric, + generics, + gitHub + } dLangReferenceOutput :: IO DLangReferenceOutput dLangReferenceOutput = do @@ -236,7 +246,14 @@ spec (HaskellReferenceOutput hsBasic hsImport hsHasGeneric hsGenerics hsGitHub) (FSharpReferenceOutput fsBasic fsImport fsHasGeneric fsGenerics fsGitHub) (PythonReferenceOutput pyPython pyBasic pyGenerics) - (KotlinReferenceOutput ktBasic ktImport ktHasGeneric ktGenerics ktGitHub) + ( KotlinReferenceOutput + ktBasicStruct + ktBasic + ktImport + ktHasGeneric + ktGenerics + ktGitHub + ) ( DLangReferenceOutput dBasicStruct dBasicUnion @@ -555,6 +572,7 @@ spec basicStructModule <- (getRight >>> PartialList.head) <$> parseModules ["examples/basicStruct.gotyno"] TypeScript.outputModule basicStructModule `shouldBe` tsBasicStruct + Kotlin.outputModule basicStructModule `shouldBe` ktBasicStruct DLang.outputModule basicStructModule `shouldBe` dBasicStruct it "Mirrors reference output for `basicUnion.gotyno`" $ do diff --git a/test/reference-output/basic.kt b/test/reference-output/basic.kt index 29e866d..7e119e3 100644 --- a/test/reference-output/basic.kt +++ b/test/reference-output/basic.kt @@ -232,4 +232,4 @@ sealed class EmbeddedEvent : java.io.Serializable { } } } -} \ No newline at end of file +} diff --git a/test/reference-output/basicStruct.kt b/test/reference-output/basicStruct.kt new file mode 100644 index 0000000..f98ee9a --- /dev/null +++ b/test/reference-output/basicStruct.kt @@ -0,0 +1,13 @@ +package org.gotynoOutput + +import com.fasterxml.jackson.annotation.* +import com.fasterxml.jackson.module.kotlin.* +import com.fasterxml.jackson.databind.annotation.* +import com.fasterxml.jackson.databind.* +import com.fasterxml.jackson.core.* +import com.fasterxml.jackson.databind.deser.std.* +/* struct BasicStruct { */ +/* field1: U32 */ +/* field2: String */ +/* } */ + diff --git a/test/reference-output/generics.kt b/test/reference-output/generics.kt index d71dc78..91e662d 100644 --- a/test/reference-output/generics.kt +++ b/test/reference-output/generics.kt @@ -161,4 +161,4 @@ sealed class KnownForEmbeddedWithUpperCase : java.io.Serializable { val media_type = "Tv" } } -} \ No newline at end of file +} diff --git a/test/reference-output/github.kt b/test/reference-output/github.kt index 73f0066..284b3a5 100644 --- a/test/reference-output/github.kt +++ b/test/reference-output/github.kt @@ -286,4 +286,4 @@ data class RepositorySearchData( @get:JsonProperty("items") val items: ArrayList ) : java.io.Serializable -} \ No newline at end of file +} diff --git a/test/reference-output/hasGeneric.kt b/test/reference-output/hasGeneric.kt index 53942da..5c3bb2b 100644 --- a/test/reference-output/hasGeneric.kt +++ b/test/reference-output/hasGeneric.kt @@ -66,4 +66,4 @@ sealed class HasGenericEvent : java.io.Serializable { val type = "GenericEvent" } } -} \ No newline at end of file +} diff --git a/test/reference-output/importExample.kt b/test/reference-output/importExample.kt index d22263d..f94c614 100644 --- a/test/reference-output/importExample.kt +++ b/test/reference-output/importExample.kt @@ -58,4 +58,4 @@ data class AllConcrete( @get:JsonProperty("field") val field: HoldsSomething, UnionUsingImport>> ) : java.io.Serializable -} \ No newline at end of file +} From 103a523c8b547e9cdf6c0d00cb68047cea256fe3 Mon Sep 17 00:00:00 2001 From: Rickard Andersson Date: Fri, 14 Oct 2022 19:32:20 +0300 Subject: [PATCH 2/7] testing(ts): add test for `basicStruct` --- test/reference-output/basicStruct.kt | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/test/reference-output/basicStruct.kt b/test/reference-output/basicStruct.kt index f98ee9a..87217c0 100644 --- a/test/reference-output/basicStruct.kt +++ b/test/reference-output/basicStruct.kt @@ -6,8 +6,16 @@ import com.fasterxml.jackson.databind.annotation.* import com.fasterxml.jackson.databind.* import com.fasterxml.jackson.core.* import com.fasterxml.jackson.databind.deser.std.* -/* struct BasicStruct { */ -/* field1: U32 */ -/* field2: String */ -/* } */ +import java.text.ParseException +import java.math.BigInteger +import kotlinx.serialization.Serializable +class BasicStruct { +@Serializable +data class BasicStruct( + @get:JsonProperty("field1") + val field1: Int, + @get:JsonProperty("field2") + val field2: String +) : java.io.Serializable +} From 23154532c8ef31d6f11fa1d8203dc49b553b7a7f Mon Sep 17 00:00:00 2001 From: Rickard Andersson Date: Fri, 14 Oct 2022 19:44:46 +0300 Subject: [PATCH 3/7] testing(kt): add `basicUnion` --- test/ParsingSpec.hs | 5 +++ test/reference-output/basicUnion.kt | 53 +++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 test/reference-output/basicUnion.kt diff --git a/test/ParsingSpec.hs b/test/ParsingSpec.hs index 0363c7f..77f7f09 100644 --- a/test/ParsingSpec.hs +++ b/test/ParsingSpec.hs @@ -51,6 +51,7 @@ data PythonReferenceOutput = PythonReferenceOutput data KotlinReferenceOutput = KotlinReferenceOutput { basicStruct :: !Text, + basicUnion :: !Text, basic :: !Text, import' :: !Text, hasGeneric :: !Text, @@ -123,6 +124,7 @@ fSharpReferenceOutput = do kotlinReferenceOutput :: IO KotlinReferenceOutput kotlinReferenceOutput = do basicStruct <- basicStructReferenceOutput "kt" + basicUnion <- basicUnionReferenceOutput "kt" basic <- basicReferenceOutput "kt" import' <- importReferenceOutput "kt" hasGeneric <- hasGenericReferenceOutput "kt" @@ -131,6 +133,7 @@ kotlinReferenceOutput = do pure KotlinReferenceOutput { basicStruct, + basicUnion, basic, import', hasGeneric, @@ -248,6 +251,7 @@ spec (PythonReferenceOutput pyPython pyBasic pyGenerics) ( KotlinReferenceOutput ktBasicStruct + ktBasicUnion ktBasic ktImport ktHasGeneric @@ -579,6 +583,7 @@ spec basicUnionModule <- (getRight >>> PartialList.head) <$> parseModules ["examples/basicUnion.gotyno"] TypeScript.outputModule basicUnionModule `shouldBe` tsBasicUnion + Kotlin.outputModule basicUnionModule `shouldBe` ktBasicUnion DLang.outputModule basicUnionModule `shouldBe` dBasicUnion it "Mirrors reference output for `genericStruct.gotyno`" $ do diff --git a/test/reference-output/basicUnion.kt b/test/reference-output/basicUnion.kt new file mode 100644 index 0000000..1f4ef5b --- /dev/null +++ b/test/reference-output/basicUnion.kt @@ -0,0 +1,53 @@ +package org.gotynoOutput + +import com.fasterxml.jackson.annotation.* +import com.fasterxml.jackson.module.kotlin.* +import com.fasterxml.jackson.databind.annotation.* +import com.fasterxml.jackson.databind.* +import com.fasterxml.jackson.core.* +import com.fasterxml.jackson.databind.deser.std.* +import java.text.ParseException +import java.math.BigInteger +import kotlinx.serialization.Serializable + +class BasicUnion { +@Serializable +data class PayloadStruct( + @get:JsonProperty("field1") + val field1: Int +) : java.io.Serializable + +@Serializable +@JsonTypeInfo( + use = JsonTypeInfo.Id.NAME, + include = JsonTypeInfo.As.EXISTING_PROPERTY, + property = "type" +) +sealed class BasicUnion : java.io.Serializable { + @Serializable + @JsonTypeName("HasStringPayload") + data class HasStringPayload(val data: String) : BasicUnion(), java.io.Serializable { + val type = "HasStringPayload" + } + + @Serializable + @JsonTypeName("HasPayload") + data class HasPayload(val data: PayloadStruct) : BasicUnion(), java.io.Serializable { + val type = "HasPayload" + } + + @Serializable + @JsonTypeName("HasNoPayload") + class HasNoPayload : BasicUnion(), java.io.Serializable { + val type = "HasNoPayload" + + override fun equals(other: Any?): Boolean { + return other is HasNoPayload + } + + override fun hashCode(): Int { + return 0 + } + } +} +} From 5bb086f0d0d87fa115dde3f593eb2a25ee41a49c Mon Sep 17 00:00:00 2001 From: Rickard Andersson Date: Fri, 14 Oct 2022 22:08:16 +0300 Subject: [PATCH 4/7] testing(kt): add `genericStruct` & `genericUnion` --- test/ParsingSpec.hs | 10 +++++++ test/reference-output/genericStruct.kt | 19 ++++++++++++ test/reference-output/genericUnion.kt | 41 ++++++++++++++++++++++++++ 3 files changed, 70 insertions(+) create mode 100644 test/reference-output/genericStruct.kt create mode 100644 test/reference-output/genericUnion.kt diff --git a/test/ParsingSpec.hs b/test/ParsingSpec.hs index 77f7f09..b515ef2 100644 --- a/test/ParsingSpec.hs +++ b/test/ParsingSpec.hs @@ -52,6 +52,8 @@ data PythonReferenceOutput = PythonReferenceOutput data KotlinReferenceOutput = KotlinReferenceOutput { basicStruct :: !Text, basicUnion :: !Text, + genericStruct :: !Text, + genericUnion :: !Text, basic :: !Text, import' :: !Text, hasGeneric :: !Text, @@ -125,6 +127,8 @@ kotlinReferenceOutput :: IO KotlinReferenceOutput kotlinReferenceOutput = do basicStruct <- basicStructReferenceOutput "kt" basicUnion <- basicUnionReferenceOutput "kt" + genericStruct <- genericStructReferenceOutput "kt" + genericUnion <- genericUnionReferenceOutput "kt" basic <- basicReferenceOutput "kt" import' <- importReferenceOutput "kt" hasGeneric <- hasGenericReferenceOutput "kt" @@ -134,6 +138,8 @@ kotlinReferenceOutput = do KotlinReferenceOutput { basicStruct, basicUnion, + genericStruct, + genericUnion, basic, import', hasGeneric, @@ -252,6 +258,8 @@ spec ( KotlinReferenceOutput ktBasicStruct ktBasicUnion + ktGenericStruct + ktGenericUnion ktBasic ktImport ktHasGeneric @@ -590,12 +598,14 @@ spec genericStructModule <- (getRight >>> PartialList.head) <$> parseModules ["examples/genericStruct.gotyno"] TypeScript.outputModule genericStructModule `shouldBe` tsGenericStruct + Kotlin.outputModule genericStructModule `shouldBe` ktGenericStruct DLang.outputModule genericStructModule `shouldBe` dGenericStruct it "Mirrors reference output for `genericUnion.gotyno`" $ do genericUnionModule <- (getRight >>> PartialList.head) <$> parseModules ["examples/genericUnion.gotyno"] TypeScript.outputModule genericUnionModule `shouldBe` tsGenericUnion + Kotlin.outputModule genericUnionModule `shouldBe` ktGenericUnion DLang.outputModule genericUnionModule `shouldBe` dGenericUnion it "Mirrors reference output for `basicEnumeration.gotyno`" $ do diff --git a/test/reference-output/genericStruct.kt b/test/reference-output/genericStruct.kt new file mode 100644 index 0000000..15ba81f --- /dev/null +++ b/test/reference-output/genericStruct.kt @@ -0,0 +1,19 @@ +package org.gotynoOutput + +import com.fasterxml.jackson.annotation.* +import com.fasterxml.jackson.module.kotlin.* +import com.fasterxml.jackson.databind.annotation.* +import com.fasterxml.jackson.databind.* +import com.fasterxml.jackson.core.* +import com.fasterxml.jackson.databind.deser.std.* +import java.text.ParseException +import java.math.BigInteger +import kotlinx.serialization.Serializable + +class GenericStruct { +@Serializable +data class GenericStruct( + @get:JsonProperty("field") + val field: T +) : java.io.Serializable +} diff --git a/test/reference-output/genericUnion.kt b/test/reference-output/genericUnion.kt new file mode 100644 index 0000000..ebaf4ec --- /dev/null +++ b/test/reference-output/genericUnion.kt @@ -0,0 +1,41 @@ +package org.gotynoOutput + +import com.fasterxml.jackson.annotation.* +import com.fasterxml.jackson.module.kotlin.* +import com.fasterxml.jackson.databind.annotation.* +import com.fasterxml.jackson.databind.* +import com.fasterxml.jackson.core.* +import com.fasterxml.jackson.databind.deser.std.* +import java.text.ParseException +import java.math.BigInteger +import kotlinx.serialization.Serializable + +class GenericUnion { +@Serializable +@JsonTypeInfo( + use = JsonTypeInfo.Id.NAME, + include = JsonTypeInfo.As.EXISTING_PROPERTY, + property = "type" +) +sealed class GenericUnion : java.io.Serializable { + @Serializable + @JsonTypeName("HasTPayload") + data class HasTPayload(val data: T) : GenericUnion(), java.io.Serializable { + val type = "HasTPayload" + } + + @Serializable + @JsonTypeName("HasNoPayload") + class HasNoPayload : GenericUnion(), java.io.Serializable { + val type = "HasNoPayload" + + override fun equals(other: Any?): Boolean { + return other is HasNoPayload<*> + } + + override fun hashCode(): Int { + return 0 + } + } +} +} From f17afb5980c34410eb62d3a034e3399674cd1b77 Mon Sep 17 00:00:00 2001 From: Rickard Andersson Date: Fri, 14 Oct 2022 22:14:17 +0300 Subject: [PATCH 5/7] testing(kt): add `basicEnumeration` --- test/ParsingSpec.hs | 5 ++++ test/reference-output/basicEnumeration.kt | 31 +++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 test/reference-output/basicEnumeration.kt diff --git a/test/ParsingSpec.hs b/test/ParsingSpec.hs index b515ef2..51bb27f 100644 --- a/test/ParsingSpec.hs +++ b/test/ParsingSpec.hs @@ -54,6 +54,7 @@ data KotlinReferenceOutput = KotlinReferenceOutput basicUnion :: !Text, genericStruct :: !Text, genericUnion :: !Text, + basicEnumeration :: !Text, basic :: !Text, import' :: !Text, hasGeneric :: !Text, @@ -129,6 +130,7 @@ kotlinReferenceOutput = do basicUnion <- basicUnionReferenceOutput "kt" genericStruct <- genericStructReferenceOutput "kt" genericUnion <- genericUnionReferenceOutput "kt" + basicEnumeration <- basicEnumerationReferenceOutput "kt" basic <- basicReferenceOutput "kt" import' <- importReferenceOutput "kt" hasGeneric <- hasGenericReferenceOutput "kt" @@ -140,6 +142,7 @@ kotlinReferenceOutput = do basicUnion, genericStruct, genericUnion, + basicEnumeration, basic, import', hasGeneric, @@ -260,6 +263,7 @@ spec ktBasicUnion ktGenericStruct ktGenericUnion + ktBasicEnumeration ktBasic ktImport ktHasGeneric @@ -612,6 +616,7 @@ spec enumerationModule <- (getRight >>> PartialList.head) <$> parseModules ["examples/basicEnumeration.gotyno"] TypeScript.outputModule enumerationModule `shouldBe` tsBasicEnumeration + Kotlin.outputModule enumerationModule `shouldBe` ktBasicEnumeration DLang.outputModule enumerationModule `shouldBe` dBasicEnumeration it "Mirrors reference output for `basicImport.gotyno`" $ do diff --git a/test/reference-output/basicEnumeration.kt b/test/reference-output/basicEnumeration.kt new file mode 100644 index 0000000..f367ec9 --- /dev/null +++ b/test/reference-output/basicEnumeration.kt @@ -0,0 +1,31 @@ +package org.gotynoOutput + +import com.fasterxml.jackson.annotation.* +import com.fasterxml.jackson.module.kotlin.* +import com.fasterxml.jackson.databind.annotation.* +import com.fasterxml.jackson.databind.* +import com.fasterxml.jackson.core.* +import com.fasterxml.jackson.databind.deser.std.* +import java.text.ParseException +import java.math.BigInteger +import kotlinx.serialization.Serializable + +class BasicEnumeration { +enum class StringValues(val data: String) : java.io.Serializable { + @JsonProperty("first") FIRST("first"), + @JsonProperty("second") SECOND("second"), + @JsonProperty("Third") THIRD("Third"), + @JsonProperty("Fourth") FOURTH("Fourth"); + + companion object {} +} + +enum class IntValues(val data: Int) : java.io.Serializable { + @JsonProperty(1) FIRST(1), + @JsonProperty(2) SECOND(2), + @JsonProperty(3) THIRD(3), + @JsonProperty(4) FOURTH(4); + + companion object {} +} +} From bbe3cd06714306e31c289a6f59a2ec9a1a092d4f Mon Sep 17 00:00:00 2001 From: Rickard Andersson Date: Fri, 14 Oct 2022 22:26:42 +0300 Subject: [PATCH 6/7] testing(kt): add `basicImport` & `basicOptional` --- test/ParsingSpec.hs | 10 ++++++ test/reference-output/basicImport.kt | 35 ++++++++++++++++++ test/reference-output/basicOptional.kt | 49 ++++++++++++++++++++++++++ 3 files changed, 94 insertions(+) create mode 100644 test/reference-output/basicImport.kt create mode 100644 test/reference-output/basicOptional.kt diff --git a/test/ParsingSpec.hs b/test/ParsingSpec.hs index 51bb27f..2e8958b 100644 --- a/test/ParsingSpec.hs +++ b/test/ParsingSpec.hs @@ -55,6 +55,8 @@ data KotlinReferenceOutput = KotlinReferenceOutput genericStruct :: !Text, genericUnion :: !Text, basicEnumeration :: !Text, + basicImport :: !Text, + basicOptional :: !Text, basic :: !Text, import' :: !Text, hasGeneric :: !Text, @@ -131,6 +133,8 @@ kotlinReferenceOutput = do genericStruct <- genericStructReferenceOutput "kt" genericUnion <- genericUnionReferenceOutput "kt" basicEnumeration <- basicEnumerationReferenceOutput "kt" + basicImport <- basicImportReferenceOutput "kt" + basicOptional <- basicOptionalReferenceOutput "kt" basic <- basicReferenceOutput "kt" import' <- importReferenceOutput "kt" hasGeneric <- hasGenericReferenceOutput "kt" @@ -143,6 +147,8 @@ kotlinReferenceOutput = do genericStruct, genericUnion, basicEnumeration, + basicImport, + basicOptional, basic, import', hasGeneric, @@ -264,6 +270,8 @@ spec ktGenericStruct ktGenericUnion ktBasicEnumeration + ktBasicImport + ktBasicOptional ktBasic ktImport ktHasGeneric @@ -624,12 +632,14 @@ spec (getRight >>> PartialList.last) <$> parseModules ["examples/basicStruct.gotyno", "examples/basicImport.gotyno"] TypeScript.outputModule basicImportModule `shouldBe` tsBasicImport + Kotlin.outputModule basicImportModule `shouldBe` ktBasicImport DLang.outputModule basicImportModule `shouldBe` dBasicImport it "Mirrors reference output for `basicOptional.gotyno`" $ do basicOptionalModule <- (getRight >>> PartialList.head) <$> parseModules ["examples/basicOptional.gotyno"] TypeScript.outputModule basicOptionalModule `shouldBe` tsBasicOptional + Kotlin.outputModule basicOptionalModule `shouldBe` ktBasicOptional DLang.outputModule basicOptionalModule `shouldBe` dBasicOptional it "Mirrors reference output for `basic.gotyno`" $ do diff --git a/test/reference-output/basicImport.kt b/test/reference-output/basicImport.kt new file mode 100644 index 0000000..c1e5f23 --- /dev/null +++ b/test/reference-output/basicImport.kt @@ -0,0 +1,35 @@ +package org.gotynoOutput + +import com.fasterxml.jackson.annotation.* +import com.fasterxml.jackson.module.kotlin.* +import com.fasterxml.jackson.databind.annotation.* +import com.fasterxml.jackson.databind.* +import com.fasterxml.jackson.core.* +import com.fasterxml.jackson.databind.deser.std.* +import java.text.ParseException +import java.math.BigInteger +import kotlinx.serialization.Serializable + +import org.gotynoOutput.BasicStruct + +class BasicImport { +@Serializable +data class StructUsingImport( + @get:JsonProperty("field") + val field: BasicStruct.BasicStruct +) : java.io.Serializable + +@Serializable +@JsonTypeInfo( + use = JsonTypeInfo.Id.NAME, + include = JsonTypeInfo.As.EXISTING_PROPERTY, + property = "type" +) +sealed class UnionUsingImport : java.io.Serializable { + @Serializable + @JsonTypeName("ConstructorWithPayload") + data class ConstructorWithPayload(val data: BasicStruct.BasicStruct) : UnionUsingImport(), java.io.Serializable { + val type = "ConstructorWithPayload" + } +} +} diff --git a/test/reference-output/basicOptional.kt b/test/reference-output/basicOptional.kt new file mode 100644 index 0000000..62d5831 --- /dev/null +++ b/test/reference-output/basicOptional.kt @@ -0,0 +1,49 @@ +package org.gotynoOutput + +import com.fasterxml.jackson.annotation.* +import com.fasterxml.jackson.module.kotlin.* +import com.fasterxml.jackson.databind.annotation.* +import com.fasterxml.jackson.databind.* +import com.fasterxml.jackson.core.* +import com.fasterxml.jackson.databind.deser.std.* +import java.text.ParseException +import java.math.BigInteger +import kotlinx.serialization.Serializable + +class BasicOptional { +@Serializable +data class HasOptionalString( + @get:JsonProperty("stringField") + val stringField: String?, + @get:JsonProperty("optionalArrayField") + val optionalArrayField: ArrayList?, + @get:JsonProperty("arrayOfOptionalField") + val arrayOfOptionalField: ArrayList +) : java.io.Serializable + +@Serializable +@JsonTypeInfo( + use = JsonTypeInfo.Id.NAME, + include = JsonTypeInfo.As.EXISTING_PROPERTY, + property = "type" +) +sealed class HasOptionalConstructor : java.io.Serializable { + @Serializable + @JsonTypeName("DoesNot") + data class DoesNot(val data: Int) : HasOptionalConstructor(), java.io.Serializable { + val type = "DoesNot" + } + + @Serializable + @JsonTypeName("Does") + data class Does(val data: Int?) : HasOptionalConstructor(), java.io.Serializable { + val type = "Does" + } + + @Serializable + @JsonTypeName("HasOptionalStruct") + data class HasOptionalStruct(val data: HasOptionalString?) : HasOptionalConstructor(), java.io.Serializable { + val type = "HasOptionalStruct" + } +} +} From 6f127293969069c96f69e95afce150f379dc8d33 Mon Sep 17 00:00:00 2001 From: Rickard Andersson Date: Fri, 14 Oct 2022 22:29:40 +0300 Subject: [PATCH 7/7] docs: update changelog for 2.2.1 --- CHANGELOG.md | 6 ++++++ gotyno-hs.cabal | 2 +- package.yaml | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 90077aa..49cc732 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 2.2.1 + +### Fixes + +- Added trailing newline in Kotlin output + ## 2.2.0 ### Added diff --git a/gotyno-hs.cabal b/gotyno-hs.cabal index 6068d74..5d9e94d 100644 --- a/gotyno-hs.cabal +++ b/gotyno-hs.cabal @@ -5,7 +5,7 @@ cabal-version: 1.12 -- see: https://github.com/sol/hpack name: gotyno-hs -version: 2.2.0 +version: 2.2.1 synopsis: A type definition compiler supporting multiple output languages. description: Compiles type definitions into F#, TypeScript and Python, with validators, decoders and encoders. category: Compiler diff --git a/package.yaml b/package.yaml index ed52e64..3374070 100644 --- a/package.yaml +++ b/package.yaml @@ -1,5 +1,5 @@ name: gotyno-hs -version: 2.2.0 +version: 2.2.1 synopsis: A type definition compiler supporting multiple output languages. description: Compiles type definitions into F#, TypeScript and Python, with validators, decoders and encoders. license: BSD2