Skip to content

Commit

Permalink
Add builder for FunSpec which accepts a MemberName (#1574)
Browse files Browse the repository at this point in the history
  • Loading branch information
JakeWharton authored May 26, 2023
1 parent 95e0e58 commit 1a02180
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 0 deletions.
2 changes: 2 additions & 0 deletions kotlinpoet/api/kotlinpoet.api
Original file line number Diff line number Diff line change
Expand Up @@ -275,6 +275,7 @@ public final class com/squareup/kotlinpoet/FileSpec$Companion {

public final class com/squareup/kotlinpoet/FunSpec : com/squareup/kotlinpoet/Annotatable, com/squareup/kotlinpoet/ContextReceivable, com/squareup/kotlinpoet/Documentable, com/squareup/kotlinpoet/OriginatingElementsHolder, com/squareup/kotlinpoet/Taggable {
public static final field Companion Lcom/squareup/kotlinpoet/FunSpec$Companion;
public static final fun builder (Lcom/squareup/kotlinpoet/MemberName;)Lcom/squareup/kotlinpoet/FunSpec$Builder;
public static final fun builder (Ljava/lang/String;)Lcom/squareup/kotlinpoet/FunSpec$Builder;
public static final fun constructorBuilder ()Lcom/squareup/kotlinpoet/FunSpec$Builder;
public fun equals (Ljava/lang/Object;)Z
Expand Down Expand Up @@ -376,6 +377,7 @@ public final class com/squareup/kotlinpoet/FunSpec$Builder : com/squareup/kotlin
}

public final class com/squareup/kotlinpoet/FunSpec$Companion {
public final fun builder (Lcom/squareup/kotlinpoet/MemberName;)Lcom/squareup/kotlinpoet/FunSpec$Builder;
public final fun builder (Ljava/lang/String;)Lcom/squareup/kotlinpoet/FunSpec$Builder;
public final fun constructorBuilder ()Lcom/squareup/kotlinpoet/FunSpec$Builder;
public final fun getterBuilder ()Lcom/squareup/kotlinpoet/FunSpec$Builder;
Expand Down
3 changes: 3 additions & 0 deletions kotlinpoet/src/main/java/com/squareup/kotlinpoet/FunSpec.kt
Original file line number Diff line number Diff line change
Expand Up @@ -560,6 +560,9 @@ public class FunSpec private constructor(

@JvmStatic public fun builder(name: String): Builder = Builder(name)

/** Create a new function builder from [MemberName.simpleName] */
@JvmStatic public fun builder(memberName: MemberName): Builder = Builder(memberName.simpleName)

@JvmStatic public fun constructorBuilder(): Builder = Builder(CONSTRUCTOR)

@JvmStatic public fun getterBuilder(): Builder = Builder(GETTER)
Expand Down
14 changes: 14 additions & 0 deletions kotlinpoet/src/test/java/com/squareup/kotlinpoet/FunSpecTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -1219,4 +1219,18 @@ class FunSpecTest {
""".trimMargin(),
)
}

@Test fun memberNameBuilder() {
val name = MemberName("com.example", "myCoolFunction")
val spec = FunSpec.builder(name)
.returns(STRING)
.addStatement("""return "hey"""")
.build()
assertThat(spec.toString()).isEqualTo(
"""
|public fun myCoolFunction(): kotlin.String = "hey"
|
""".trimMargin(),
)
}
}

0 comments on commit 1a02180

Please sign in to comment.