diff --git a/kotlin/tests/pom.xml b/kotlin/tests/pom.xml
index eb2d813..5e1c1df 100644
--- a/kotlin/tests/pom.xml
+++ b/kotlin/tests/pom.xml
@@ -117,6 +117,7 @@
-Werror
-Xuse-experimental=kotlin.ExperimentalStdlibApi
+ -XXLanguage:+InlineClasses
diff --git a/kotlin/tests/src/test/kotlin/com/squareup/moshi/kotlin/DualKotlinTest.kt b/kotlin/tests/src/test/kotlin/com/squareup/moshi/kotlin/DualKotlinTest.kt
index 82488d6..6a1d769 100644
--- a/kotlin/tests/src/test/kotlin/com/squareup/moshi/kotlin/DualKotlinTest.kt
+++ b/kotlin/tests/src/test/kotlin/com/squareup/moshi/kotlin/DualKotlinTest.kt
@@ -252,4 +252,36 @@ class DualKotlinTest(useReflection: Boolean) {
assertThat(decoded.a).isEqualTo(null)
}
+ @Test fun inlineClass() {
+ val adapter = moshi.adapter()
+
+ val inline = InlineClass(5)
+
+ val expectedJson = """{"i":5}"""
+ assertThat(adapter.toJson(inline)).isEqualTo(expectedJson)
+
+ val testJson = """{"i":6}"""
+ val result = adapter.fromJson(testJson)!!
+ assertThat(result.i).isEqualTo(6)
+ }
+
+ @JsonClass(generateAdapter = true)
+ data class InlineConsumer(val inline: InlineClass)
+
+ @Test fun inlineClassConsumer() {
+ val adapter = moshi.adapter()
+
+ val consumer = InlineConsumer(InlineClass(23))
+
+ val expectedJson= """{"inline":{"i":23}}"""
+ assertThat(adapter.toJson(consumer)).isEqualTo(expectedJson)
+
+ val testJson = """{"inline":{"i":42}}"""
+ val result = adapter.fromJson(testJson)!!
+ assertThat(result.inline.i).isEqualTo(42)
+ }
}
+
+// Has to be outside since inline classes are only allowed on top level
+@JsonClass(generateAdapter = true)
+inline class InlineClass(val i: Int)