@@ -71,7 +71,9 @@ class FunSpec private constructor(builder: Builder) {
7171 codeWriter.emitAnnotations(annotations, false )
7272 codeWriter.emitModifiers(modifiers, implicitModifiers)
7373
74- if (! isConstructor && ! name.isAccessor) {
74+ if (name == null ) {
75+ codeWriter.emit(" fun" )
76+ } else if (! isConstructor && ! name.isAccessor) {
7577 codeWriter.emit(" fun " )
7678 }
7779
@@ -117,7 +119,9 @@ class FunSpec private constructor(builder: Builder) {
117119 codeWriter.emitCode(" %T." , receiverType)
118120 }
119121 }
120- codeWriter.emitCode(" %L" , escapeIfNecessary(name))
122+ if (name != null ) {
123+ codeWriter.emitCode(" %L" , escapeIfNecessary(name))
124+ }
121125 }
122126
123127 parameters.emit(codeWriter) { param ->
@@ -181,7 +185,7 @@ class FunSpec private constructor(builder: Builder) {
181185 return builder
182186 }
183187
184- class Builder internal constructor(internal val name : String ) {
188+ class Builder internal constructor(internal val name : String? ) {
185189 internal val kdoc = CodeBlock .builder()
186190 internal var receiverType: TypeName ? = null
187191 internal var returnType: TypeName ? = null
@@ -366,8 +370,8 @@ class FunSpec private constructor(builder: Builder) {
366370 internal const val GETTER = " get()"
367371 internal const val SETTER = " set()"
368372
369- internal val String .isConstructor get() = this == CONSTRUCTOR
370- internal val String .isAccessor get() = this .isOneOf(GETTER , SETTER )
373+ internal val String? .isConstructor get() = this == CONSTRUCTOR
374+ internal val String? .isAccessor get() = this != null && this .isOneOf(GETTER , SETTER )
371375
372376 private val EXPRESSION_BODY_PREFIX = CodeBlock .of(" return " )
373377
@@ -379,6 +383,8 @@ class FunSpec private constructor(builder: Builder) {
379383
380384 @JvmStatic fun setterBuilder () = Builder (SETTER )
381385
386+ @JvmStatic fun anonymousFunctionBuilder () = Builder (null )
387+
382388 /* *
383389 * Returns a new fun spec builder that overrides `method`.
384390
0 commit comments