Skip to content

Commit 62c8fc3

Browse files
committed
refactor(dsl)!: replace build*Request patterns with Companion.invoke for cleaner DSL usage
- Deprecated `build*Request` functions across DSLs in favor of the `Companion.invoke` operator. - Updated all documentation, examples, and tests to reflect the new syntax. - Improved clarity, reduced redundancy, and streamlined API usage.
1 parent 64e0314 commit 62c8fc3

33 files changed

Lines changed: 331 additions & 424 deletions

integration-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/kotlin/AbstractToolIntegrationTest.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import io.modelcontextprotocol.kotlin.sdk.types.ImageContent
1010
import io.modelcontextprotocol.kotlin.sdk.types.ServerCapabilities
1111
import io.modelcontextprotocol.kotlin.sdk.types.TextContent
1212
import io.modelcontextprotocol.kotlin.sdk.types.ToolSchema
13-
import io.modelcontextprotocol.kotlin.sdk.types.buildCallToolResult
13+
import io.modelcontextprotocol.kotlin.sdk.types.invoke
1414
import kotlinx.coroutines.Dispatchers
1515
import kotlinx.coroutines.delay
1616
import kotlinx.coroutines.launch
@@ -87,7 +87,7 @@ abstract class AbstractToolIntegrationTest : KotlinTestBase() {
8787
) { request ->
8888
val text = (request.params.arguments?.get("text") as? JsonPrimitive)?.content ?: "No text provided"
8989

90-
buildCallToolResult {
90+
CallToolResult {
9191
textContent("Echo: $text")
9292
structuredContent {
9393
put("result", text)
@@ -115,7 +115,7 @@ abstract class AbstractToolIntegrationTest : KotlinTestBase() {
115115
) { request ->
116116
val text = (request.params.arguments?.get("text") as? JsonPrimitive)?.content ?: "No text provided"
117117

118-
buildCallToolResult {
118+
CallToolResult {
119119
textContent("Echo: $text")
120120
structuredContent {
121121
put("result", text)

integration-test/src/jvmTest/kotlin/io/modelcontextprotocol/kotlin/sdk/integration/typescript/sse/KotlinServerForTsClientSse.kt

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import io.modelcontextprotocol.kotlin.sdk.server.Server
2222
import io.modelcontextprotocol.kotlin.sdk.server.ServerOptions
2323
import io.modelcontextprotocol.kotlin.sdk.shared.AbstractTransport
2424
import io.modelcontextprotocol.kotlin.sdk.shared.TransportSendOptions
25+
import io.modelcontextprotocol.kotlin.sdk.types.CallToolResult
2526
import io.modelcontextprotocol.kotlin.sdk.types.GetPromptResult
2627
import io.modelcontextprotocol.kotlin.sdk.types.Implementation
2728
import io.modelcontextprotocol.kotlin.sdk.types.JSONRPCError
@@ -40,7 +41,7 @@ import io.modelcontextprotocol.kotlin.sdk.types.ServerCapabilities
4041
import io.modelcontextprotocol.kotlin.sdk.types.TextContent
4142
import io.modelcontextprotocol.kotlin.sdk.types.TextResourceContents
4243
import io.modelcontextprotocol.kotlin.sdk.types.ToolSchema
43-
import io.modelcontextprotocol.kotlin.sdk.types.buildCallToolResult
44+
import io.modelcontextprotocol.kotlin.sdk.types.invoke
4445
import kotlinx.coroutines.CancellationException
4546
import kotlinx.coroutines.CompletableDeferred
4647
import kotlinx.coroutines.channels.Channel
@@ -175,9 +176,7 @@ class KotlinServerForTsClient {
175176
logger.info { "Terminating session: $sessionId" }
176177
val transport = serverTransports[sessionId]!!
177178
serverTransports.remove(sessionId)
178-
runBlocking {
179-
transport.close()
180-
}
179+
transport.close()
181180
call.respond(HttpStatusCode.OK)
182181
} else {
183182
logger.warn { "Invalid session termination request: $sessionId" }
@@ -228,7 +227,7 @@ class KotlinServerForTsClient {
228227
),
229228
) { request ->
230229
val name = (request.params.arguments?.get("name") as? JsonPrimitive)?.content ?: "World"
231-
buildCallToolResult {
230+
CallToolResult {
232231
textContent("Hello, $name!")
233232
structuredContent {
234233
put("greeting", JsonPrimitive("Hello, $name!"))
@@ -254,7 +253,7 @@ class KotlinServerForTsClient {
254253
) { request ->
255254
val name = (request.params.arguments?.get("name") as? JsonPrimitive)?.content ?: "World"
256255

257-
buildCallToolResult {
256+
CallToolResult {
258257
textContent("Multiple greetings sent to $name!")
259258
structuredContent {
260259
put("greeting", JsonPrimitive("Multiple greetings sent to $name!"))

kotlin-sdk-core/api/kotlin-sdk-core.api

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1255,8 +1255,8 @@ public final class io/modelcontextprotocol/kotlin/sdk/types/CompleteResultBuilde
12551255
}
12561256

12571257
public final class io/modelcontextprotocol/kotlin/sdk/types/Completion_dslKt {
1258-
public static final fun buildCompleteRequest (Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequest;
1259-
public static final fun buildCompleteResult (Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/CompleteResult;
1258+
public static final fun invoke (Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequest$Companion;Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/CompleteRequest;
1259+
public static final fun invoke (Lio/modelcontextprotocol/kotlin/sdk/types/CompleteResult$Companion;Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/CompleteResult;
12601260
}
12611261

12621262
public abstract interface class io/modelcontextprotocol/kotlin/sdk/types/ContentBlock : io/modelcontextprotocol/kotlin/sdk/types/WithMeta {
@@ -1649,7 +1649,7 @@ public final class io/modelcontextprotocol/kotlin/sdk/types/ElicitResult$Compani
16491649
}
16501650

16511651
public final class io/modelcontextprotocol/kotlin/sdk/types/Elicitation_dslKt {
1652-
public static final fun buildElicitRequest (Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequest;
1652+
public static final fun invoke (Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequest$Companion;Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/ElicitRequest;
16531653
}
16541654

16551655
public final class io/modelcontextprotocol/kotlin/sdk/types/EmbeddedResource : io/modelcontextprotocol/kotlin/sdk/types/ContentBlock {
@@ -2109,8 +2109,8 @@ public final class io/modelcontextprotocol/kotlin/sdk/types/InitializeResultBuil
21092109
}
21102110

21112111
public final class io/modelcontextprotocol/kotlin/sdk/types/Initialize_dslKt {
2112-
public static final fun buildInitializeRequest (Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/InitializeRequest;
2113-
public static final fun buildInitializeResult (Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/InitializeResult;
2112+
public static final fun invoke (Lio/modelcontextprotocol/kotlin/sdk/types/InitializeRequest$Companion;Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/InitializeRequest;
2113+
public static final fun invoke (Lio/modelcontextprotocol/kotlin/sdk/types/InitializeResult$Companion;Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/InitializeResult;
21142114
}
21152115

21162116
public final class io/modelcontextprotocol/kotlin/sdk/types/InitializedNotification : io/modelcontextprotocol/kotlin/sdk/types/ClientNotification {
@@ -2790,7 +2790,7 @@ public final class io/modelcontextprotocol/kotlin/sdk/types/LoggingMessageNotifi
27902790
}
27912791

27922792
public final class io/modelcontextprotocol/kotlin/sdk/types/Logging_dslKt {
2793-
public static final fun buildSetLevelRequest (Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/SetLevelRequest;
2793+
public static final fun invoke (Lio/modelcontextprotocol/kotlin/sdk/types/SetLevelRequest$Companion;Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/SetLevelRequest;
27942794
}
27952795

27962796
public abstract interface annotation class io/modelcontextprotocol/kotlin/sdk/types/McpDsl : java/lang/annotation/Annotation {
@@ -3097,7 +3097,7 @@ public final class io/modelcontextprotocol/kotlin/sdk/types/PingRequestBuilder :
30973097
}
30983098

30993099
public final class io/modelcontextprotocol/kotlin/sdk/types/PingRequest_dslKt {
3100-
public static final fun buildPingRequest (Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/PingRequest;
3100+
public static final fun invoke (Lio/modelcontextprotocol/kotlin/sdk/types/PingRequest$Companion;Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/PingRequest;
31013101
}
31023102

31033103
public final class io/modelcontextprotocol/kotlin/sdk/types/Progress {
@@ -3372,10 +3372,10 @@ public final class io/modelcontextprotocol/kotlin/sdk/types/PromptReference$Comp
33723372
}
33733373

33743374
public final class io/modelcontextprotocol/kotlin/sdk/types/Prompts_dslKt {
3375-
public static final fun buildGetPromptRequest (Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/GetPromptRequest;
3376-
public static final fun buildGetPromptResult (Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/GetPromptResult;
3377-
public static final fun buildListPromptsRequest (Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/ListPromptsRequest;
3378-
public static final fun buildListPromptsResult (Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/ListPromptsResult;
3375+
public static final fun invoke (Lio/modelcontextprotocol/kotlin/sdk/types/GetPromptRequest$Companion;Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/GetPromptRequest;
3376+
public static final fun invoke (Lio/modelcontextprotocol/kotlin/sdk/types/GetPromptResult$Companion;Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/GetPromptResult;
3377+
public static final fun invoke (Lio/modelcontextprotocol/kotlin/sdk/types/ListPromptsRequest$Companion;Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/ListPromptsRequest;
3378+
public static final fun invoke (Lio/modelcontextprotocol/kotlin/sdk/types/ListPromptsResult$Companion;Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/ListPromptsResult;
33793379
}
33803380

33813381
public final class io/modelcontextprotocol/kotlin/sdk/types/RPCError {
@@ -4033,14 +4033,14 @@ public final class io/modelcontextprotocol/kotlin/sdk/types/ResourceUpdatedNotif
40334033
}
40344034

40354035
public final class io/modelcontextprotocol/kotlin/sdk/types/Resources_dslKt {
4036-
public static final fun buildListResourceTemplatesRequest (Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/ListResourceTemplatesRequest;
4037-
public static final fun buildListResourceTemplatesResult (Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/ListResourceTemplatesResult;
4038-
public static final fun buildListResourcesRequest (Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/ListResourcesRequest;
4039-
public static final fun buildListResourcesResult (Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/ListResourcesResult;
4040-
public static final fun buildReadResourceRequest (Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/ReadResourceRequest;
4041-
public static final fun buildReadResourceResult (Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/ReadResourceResult;
4042-
public static final fun buildSubscribeRequest (Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/SubscribeRequest;
4043-
public static final fun buildUnsubscribeRequest (Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/UnsubscribeRequest;
4036+
public static final fun invoke (Lio/modelcontextprotocol/kotlin/sdk/types/ListResourceTemplatesRequest$Companion;Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/ListResourceTemplatesRequest;
4037+
public static final fun invoke (Lio/modelcontextprotocol/kotlin/sdk/types/ListResourceTemplatesResult$Companion;Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/ListResourceTemplatesResult;
4038+
public static final fun invoke (Lio/modelcontextprotocol/kotlin/sdk/types/ListResourcesRequest$Companion;Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/ListResourcesRequest;
4039+
public static final fun invoke (Lio/modelcontextprotocol/kotlin/sdk/types/ListResourcesResult$Companion;Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/ListResourcesResult;
4040+
public static final fun invoke (Lio/modelcontextprotocol/kotlin/sdk/types/ReadResourceRequest$Companion;Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/ReadResourceRequest;
4041+
public static final fun invoke (Lio/modelcontextprotocol/kotlin/sdk/types/ReadResourceResult$Companion;Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/ReadResourceResult;
4042+
public static final fun invoke (Lio/modelcontextprotocol/kotlin/sdk/types/SubscribeRequest$Companion;Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/SubscribeRequest;
4043+
public static final fun invoke (Lio/modelcontextprotocol/kotlin/sdk/types/UnsubscribeRequest$Companion;Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/UnsubscribeRequest;
40444044
}
40454045

40464046
public abstract class io/modelcontextprotocol/kotlin/sdk/types/ResultBuilder {
@@ -4129,7 +4129,7 @@ public final class io/modelcontextprotocol/kotlin/sdk/types/RootsListChangedNoti
41294129
}
41304130

41314131
public final class io/modelcontextprotocol/kotlin/sdk/types/Roots_dslKt {
4132-
public static final fun buildListRootsRequest (Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/ListRootsRequest;
4132+
public static final fun invoke (Lio/modelcontextprotocol/kotlin/sdk/types/ListRootsRequest$Companion;Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/ListRootsRequest;
41334133
}
41344134

41354135
public final class io/modelcontextprotocol/kotlin/sdk/types/SamplingMessage {
@@ -4173,7 +4173,7 @@ public final class io/modelcontextprotocol/kotlin/sdk/types/Sampling_dslKt {
41734173
public static final fun assistantAudio (Lio/modelcontextprotocol/kotlin/sdk/types/SamplingMessageBuilder;Lkotlin/jvm/functions/Function1;)V
41744174
public static final fun assistantImage (Lio/modelcontextprotocol/kotlin/sdk/types/SamplingMessageBuilder;Lkotlin/jvm/functions/Function1;)V
41754175
public static final fun assistantText (Lio/modelcontextprotocol/kotlin/sdk/types/SamplingMessageBuilder;Lkotlin/jvm/functions/Function1;)V
4176-
public static final fun buildCreateMessageRequest (Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/CreateMessageRequest;
4176+
public static final fun invoke (Lio/modelcontextprotocol/kotlin/sdk/types/CreateMessageRequest$Companion;Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/CreateMessageRequest;
41774177
public static final fun user (Lio/modelcontextprotocol/kotlin/sdk/types/SamplingMessageBuilder;Lkotlin/jvm/functions/Function0;)V
41784178
public static final fun userAudio (Lio/modelcontextprotocol/kotlin/sdk/types/SamplingMessageBuilder;Lkotlin/jvm/functions/Function1;)V
41794179
public static final fun userImage (Lio/modelcontextprotocol/kotlin/sdk/types/SamplingMessageBuilder;Lkotlin/jvm/functions/Function1;)V
@@ -4772,10 +4772,10 @@ public final class io/modelcontextprotocol/kotlin/sdk/types/ToolsKt {
47724772
}
47734773

47744774
public final class io/modelcontextprotocol/kotlin/sdk/types/Tools_dslKt {
4775-
public static final fun buildCallToolRequest (Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/CallToolRequest;
4776-
public static final fun buildCallToolResult (Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/CallToolResult;
4777-
public static final fun buildListToolsRequest (Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/ListToolsRequest;
4778-
public static final fun buildListToolsResult (Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/ListToolsResult;
4775+
public static final fun invoke (Lio/modelcontextprotocol/kotlin/sdk/types/CallToolRequest$Companion;Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/CallToolRequest;
4776+
public static final fun invoke (Lio/modelcontextprotocol/kotlin/sdk/types/CallToolResult$Companion;Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/CallToolResult;
4777+
public static final fun invoke (Lio/modelcontextprotocol/kotlin/sdk/types/ListToolsRequest$Companion;Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/ListToolsRequest;
4778+
public static final fun invoke (Lio/modelcontextprotocol/kotlin/sdk/types/ListToolsResult$Companion;Lkotlin/jvm/functions/Function1;)Lio/modelcontextprotocol/kotlin/sdk/types/ListToolsResult;
47794779
}
47804780

47814781
public final class io/modelcontextprotocol/kotlin/sdk/types/UnknownResourceContents : io/modelcontextprotocol/kotlin/sdk/types/ResourceContents {

kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/capabilities.dsl.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ import kotlinx.serialization.json.buildJsonObject
1616
* - [elicitation] - Indicates support for elicitation from the server
1717
* - [experimental] - Defines experimental, non-standard capabilities
1818
*
19-
* Example usage within [buildInitializeRequest][buildInitializeRequest]:
19+
* Example usage within [InitializeRequest][InitializeRequest]:
2020
* ```kotlin
21-
* val request = buildInitializeRequest {
21+
* val request = InitializeRequest {
2222
* protocolVersion = "1.0"
2323
* capabilities {
2424
* sampling(ClientCapabilities.sampling)

kotlin-sdk-core/src/commonMain/kotlin/io/modelcontextprotocol/kotlin/sdk/types/completion.dsl.kt

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
package io.modelcontextprotocol.kotlin.sdk.types
22

33
import io.modelcontextprotocol.kotlin.sdk.ExperimentalMcpApi
4-
import kotlin.contracts.ExperimentalContracts
5-
import kotlin.contracts.InvocationKind
6-
import kotlin.contracts.contract
74

85
/**
96
* Creates a [CompleteRequest] using a type-safe DSL builder.
@@ -18,15 +15,15 @@ import kotlin.contracts.contract
1815
*
1916
* Example with [PromptReference]:
2017
* ```kotlin
21-
* val request = buildCompleteRequest {
18+
* val request = CompleteRequest {
2219
* argument("query", "user input")
2320
* ref(PromptReference("searchPrompt"))
2421
* }
2522
* ```
2623
*
2724
* Example with [ResourceTemplateReference]:
2825
* ```kotlin
29-
* val request = buildCompleteRequest {
26+
* val request = CompleteRequest {
3027
* argument("path", "/users/123")
3128
* ref(ResourceTemplateReference("file:///{path}"))
3229
* context {
@@ -40,20 +37,17 @@ import kotlin.contracts.contract
4037
* @return A configured [CompleteRequest] instance
4138
* @see CompleteRequestBuilder
4239
*/
43-
@OptIn(ExperimentalContracts::class)
4440
@ExperimentalMcpApi
45-
public inline fun buildCompleteRequest(block: CompleteRequestBuilder.() -> Unit): CompleteRequest {
46-
contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) }
47-
return CompleteRequestBuilder().apply(block).build()
48-
}
41+
public inline operator fun CompleteRequest.Companion.invoke(block: CompleteRequestBuilder.() -> Unit): CompleteRequest =
42+
CompleteRequestBuilder().apply(block).build()
4943

5044
/**
5145
* DSL builder for constructing [CompleteRequest] instances.
5246
*
5347
* This builder provides methods to configure completion requests for prompts or resource templates.
5448
* Both [argument] and [ref] are required; [context] is optional.
5549
*
56-
* @see buildCompleteRequest
50+
* @see CompleteRequest
5751
*/
5852
@McpDsl
5953
public class CompleteRequestBuilder @PublishedApi internal constructor() : RequestBuilder() {
@@ -178,18 +172,15 @@ public class CompleteRequestBuilder @PublishedApi internal constructor() : Reque
178172
*
179173
* Example:
180174
* ```kotlin
181-
* val result = buildCompleteResult {
175+
* val result = CompleteResult {
182176
* values("user1", "user2", "user3")
183177
* total = 3
184178
* }
185179
* ```
186180
*/
187-
@OptIn(ExperimentalContracts::class)
188181
@ExperimentalMcpApi
189-
public inline fun buildCompleteResult(block: CompleteResultBuilder.() -> Unit): CompleteResult {
190-
contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) }
191-
return CompleteResultBuilder().apply(block).build()
192-
}
182+
public inline operator fun CompleteResult.Companion.invoke(block: CompleteResultBuilder.() -> Unit): CompleteResult =
183+
CompleteResultBuilder().apply(block).build()
193184

194185
private const val MAX_ITEMS = 100
195186

0 commit comments

Comments
 (0)