Skip to content

Commit

Permalink
Merge pull request #71 from square/jwilson.0518.top_level_properties
Browse files Browse the repository at this point in the history
Support top-level properties.
  • Loading branch information
swankjesse committed May 19, 2017
2 parents d309590 + 155fa56 commit ddbd3fd
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 4 deletions.
6 changes: 6 additions & 0 deletions src/main/java/com/squareup/kotlinpoet/KotlinFile.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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()
}
}
Expand Down Expand Up @@ -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)
Expand Down
20 changes: 16 additions & 4 deletions src/test/java/com/squareup/kotlinpoet/KotlinPoetTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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())
}

Expand Down

0 comments on commit ddbd3fd

Please sign in to comment.