diff --git a/src/main/java/com/squareup/kotlinpoet/KotlinFile.kt b/src/main/java/com/squareup/kotlinpoet/KotlinFile.kt index e2730ec929..8e532d1893 100644 --- a/src/main/java/com/squareup/kotlinpoet/KotlinFile.kt +++ b/src/main/java/com/squareup/kotlinpoet/KotlinFile.kt @@ -148,6 +148,7 @@ class KotlinFile private constructor(builder: KotlinFile.Builder) { when (member) { is TypeSpec -> member.emit(codeWriter, null) is FunSpec -> member.emit(codeWriter, null, setOf(KModifier.PUBLIC)) + is PropertySpec -> member.emit(codeWriter, setOf(KModifier.PUBLIC)) else -> throw AssertionError() } } @@ -233,6 +234,11 @@ class KotlinFile private constructor(builder: KotlinFile.Builder) { return this } + fun addProperty(propertySpec: PropertySpec): Builder { + members += propertySpec + return this + } + fun addStaticImport(constant: Enum<*>) = addStaticImport(ClassName.get( (constant as java.lang.Enum<*>).getDeclaringClass()), constant.name) diff --git a/src/test/java/com/squareup/kotlinpoet/KotlinPoetTest.kt b/src/test/java/com/squareup/kotlinpoet/KotlinPoetTest.kt index 2742ab0a8e..20df4b6aef 100644 --- a/src/test/java/com/squareup/kotlinpoet/KotlinPoetTest.kt +++ b/src/test/java/com/squareup/kotlinpoet/KotlinPoetTest.kt @@ -26,23 +26,35 @@ class KotlinPoetTest { val source = KotlinFile.builder(tacosPackage, "Taco") .addFun(FunSpec.builder("a").addModifiers(KModifier.PUBLIC).build()) .addType(TypeSpec.classBuilder("B").build()) - .addFun(FunSpec.builder("c").build()) - .addType(TypeSpec.classBuilder("D").build()) + .addProperty(PropertySpec.builder(String::class, "c", KModifier.PUBLIC) + .initializer("%S", "C") + .build()) + .addFun(FunSpec.builder("d").build()) + .addType(TypeSpec.classBuilder("E").build()) + .addProperty(PropertySpec.builder(String::class, "f", KModifier.PUBLIC) + .initializer("%S", "F") + .build()) .build() assertThat(source.toString()).isEqualTo(""" |package com.squareup.tacos | + |import java.lang.String + | |fun a() { |} | |class B { |} | - |fun c() { + |val c: String = "C" + | + |fun d() { |} | - |class D { + |class E { |} + | + |val f: String = "F" |""".trimMargin()) }