5
5
package org.jetbrains.kotlin.buildtools.api.tests.compilation
6
6
7
7
import org.jetbrains.kotlin.buildtools.api.CompilerExecutionStrategyConfiguration
8
- import org.jetbrains.kotlin.buildtools.api.jvm.ClassSnapshotGranularity
9
8
import org.jetbrains.kotlin.buildtools.api.tests.compilation.assertions.assertLogContainsPatterns
10
9
import org.jetbrains.kotlin.buildtools.api.tests.compilation.model.DefaultStrategyAgnosticCompilationTest
11
10
import org.jetbrains.kotlin.buildtools.api.tests.compilation.model.LogLevel
12
- import org.jetbrains.kotlin.buildtools.api.tests.compilation.model.SnapshotConfig
13
11
import org.jetbrains.kotlin.buildtools.api.tests.compilation.scenario.scenario
14
12
import org.jetbrains.kotlin.buildtools.api.tests.compilation.util.compile
15
13
import org.jetbrains.kotlin.buildtools.api.tests.compilation.util.execute
14
+ import org.jetbrains.kotlin.buildtools.api.tests.compilation.util.moduleWithInlineSnapshotting
16
15
import org.jetbrains.kotlin.test.TestMetadata
17
16
import org.junit.jupiter.api.Disabled
18
17
import org.junit.jupiter.api.DisplayName
@@ -27,10 +26,9 @@ class InlinedLambdaChangeTest : BaseCompilationTest() {
27
26
fun testMainCase (strategyConfig : CompilerExecutionStrategyConfiguration ) {
28
27
scenario(strategyConfig) {
29
28
val lib = module(" ic-scenarios/inline-local-class/lambda-body-change/lib" )
30
- val app = module (
29
+ val app = moduleWithInlineSnapshotting (
31
30
" ic-scenarios/inline-local-class/lambda-body-change/app" ,
32
31
dependencies = listOf (lib),
33
- snapshotConfig = SnapshotConfig (ClassSnapshotGranularity .CLASS_MEMBER_LEVEL , true ),
34
32
)
35
33
36
34
app.execute(mainClass = " com.example.ictest.CallSiteKt" , exactOutput = INITIAL_OUTPUT )
@@ -72,10 +70,9 @@ class InlinedLambdaChangeTest : BaseCompilationTest() {
72
70
fun testLocalClassInLocal (strategyConfig : CompilerExecutionStrategyConfiguration ) {
73
71
scenario(strategyConfig) {
74
72
val lib = module(" ic-scenarios/inline-local-class/local-in-local/lib" )
75
- val app = module (
73
+ val app = moduleWithInlineSnapshotting (
76
74
" ic-scenarios/inline-local-class/local-in-local/app" ,
77
75
dependencies = listOf (lib),
78
- snapshotConfig = SnapshotConfig (ClassSnapshotGranularity .CLASS_MEMBER_LEVEL , true ),
79
76
)
80
77
81
78
app.execute(mainClass = " CallSiteKt" , exactOutput = INITIAL_OUTPUT )
@@ -101,10 +98,9 @@ class InlinedLambdaChangeTest : BaseCompilationTest() {
101
98
*/
102
99
scenario(strategyConfig) {
103
100
val lib = module(" ic-scenarios/inline-local-class/local-uses-local-deduplication/lib" )
104
- val app = module (
101
+ val app = moduleWithInlineSnapshotting (
105
102
" ic-scenarios/inline-local-class/local-uses-local-deduplication/app" ,
106
103
dependencies = listOf (lib),
107
- snapshotConfig = SnapshotConfig (ClassSnapshotGranularity .CLASS_MEMBER_LEVEL , true ),
108
104
)
109
105
110
106
app.execute(mainClass = " CallSiteKt" , exactOutput = INITIAL_OUTPUT )
@@ -124,10 +120,9 @@ class InlinedLambdaChangeTest : BaseCompilationTest() {
124
120
// same as [testInlinedClassDeduplication]
125
121
scenario(strategyConfig) {
126
122
val lib = module(" ic-scenarios/inline-local-class/local-uses-local-deduplication-v2/lib" )
127
- val app = module (
123
+ val app = moduleWithInlineSnapshotting (
128
124
" ic-scenarios/inline-local-class/local-uses-local-deduplication-v2/app" ,
129
125
dependencies = listOf (lib),
130
- snapshotConfig = SnapshotConfig (ClassSnapshotGranularity .CLASS_MEMBER_LEVEL , true ),
131
126
)
132
127
133
128
app.execute(mainClass = " CallSiteKt" , exactOutput = INITIAL_OUTPUT )
@@ -146,10 +141,9 @@ class InlinedLambdaChangeTest : BaseCompilationTest() {
146
141
fun testLocalNamedClass (strategyConfig : CompilerExecutionStrategyConfiguration ) {
147
142
scenario(strategyConfig) {
148
143
val lib = module(" ic-scenarios/inline-local-class/local-named/lib" )
149
- val app = module (
144
+ val app = moduleWithInlineSnapshotting (
150
145
" ic-scenarios/inline-local-class/local-named/app" ,
151
146
dependencies = listOf (lib),
152
- snapshotConfig = SnapshotConfig (ClassSnapshotGranularity .CLASS_MEMBER_LEVEL , true ),
153
147
)
154
148
lib.replaceFileWithVersion(" inlinedLocalClass.kt" , " addNamedClass" )
155
149
lib.compile { module, scenarioModule ->
@@ -166,10 +160,9 @@ class InlinedLambdaChangeTest : BaseCompilationTest() {
166
160
fun testNoRecompilationNeeded (strategyConfig : CompilerExecutionStrategyConfiguration ) {
167
161
scenario(strategyConfig) {
168
162
val lib = module(" ic-scenarios/inline-local-class/no-recompile/lib" )
169
- val app = module (
163
+ val app = moduleWithInlineSnapshotting (
170
164
" ic-scenarios/inline-local-class/no-recompile/app" ,
171
165
dependencies = listOf (lib),
172
- snapshotConfig = SnapshotConfig (ClassSnapshotGranularity .CLASS_MEMBER_LEVEL , true ),
173
166
)
174
167
175
168
app.execute(mainClass = " CallSiteKt" , exactOutput = INITIAL_OUTPUT )
@@ -188,10 +181,9 @@ class InlinedLambdaChangeTest : BaseCompilationTest() {
188
181
fun testNestedInlineFunctions (strategyConfig : CompilerExecutionStrategyConfiguration ) {
189
182
scenario(strategyConfig) {
190
183
val lib = module(" ic-scenarios/inline-local-class/nested-inline/lib" )
191
- val app = module (
184
+ val app = moduleWithInlineSnapshotting (
192
185
" ic-scenarios/inline-local-class/nested-inline/app" ,
193
186
dependencies = listOf (lib),
194
- snapshotConfig = SnapshotConfig (ClassSnapshotGranularity .CLASS_MEMBER_LEVEL , true ),
195
187
)
196
188
197
189
app.execute(mainClass = " CallSiteKt" , exactOutput = INITIAL_OUTPUT )
@@ -213,10 +205,9 @@ class InlinedLambdaChangeTest : BaseCompilationTest() {
213
205
fun testInlineProperty (strategyConfig : CompilerExecutionStrategyConfiguration ) {
214
206
scenario(strategyConfig) {
215
207
val lib = module(" ic-scenarios/inline-local-class/inline-property/lib" )
216
- val app = module (
208
+ val app = moduleWithInlineSnapshotting (
217
209
" ic-scenarios/inline-local-class/inline-property/app" ,
218
210
dependencies = listOf (lib),
219
- snapshotConfig = SnapshotConfig (ClassSnapshotGranularity .CLASS_MEMBER_LEVEL , true ),
220
211
)
221
212
222
213
app.execute(mainClass = " CallSiteKt" , exactOutput = INITIAL_OUTPUT )
@@ -235,10 +226,9 @@ class InlinedLambdaChangeTest : BaseCompilationTest() {
235
226
fun testMultipleUnusedLambdas (strategyConfig : CompilerExecutionStrategyConfiguration ) {
236
227
scenario(strategyConfig) {
237
228
val lib = module(" ic-scenarios/inline-local-class/no-recompile-lambdas/lib" )
238
- val app = module (
229
+ val app = moduleWithInlineSnapshotting (
239
230
" ic-scenarios/inline-local-class/no-recompile-lambdas/app" ,
240
231
dependencies = listOf (lib),
241
- snapshotConfig = SnapshotConfig (ClassSnapshotGranularity .CLASS_MEMBER_LEVEL , true ),
242
232
)
243
233
244
234
app.execute(mainClass = " CallSiteKt" , exactOutput = INITIAL_OUTPUT )
@@ -257,10 +247,9 @@ class InlinedLambdaChangeTest : BaseCompilationTest() {
257
247
fun testCrossInlineLambdaChange (strategyConfig : CompilerExecutionStrategyConfiguration ) {
258
248
scenario(strategyConfig) {
259
249
val lib = module(" ic-scenarios/inline-local-class/inline-crossinline/lib" )
260
- val app = module (
250
+ val app = moduleWithInlineSnapshotting (
261
251
" ic-scenarios/inline-local-class/inline-crossinline/app" ,
262
252
dependencies = listOf (lib),
263
- snapshotConfig = SnapshotConfig (ClassSnapshotGranularity .CLASS_MEMBER_LEVEL , true ),
264
253
)
265
254
266
255
app.execute(mainClass = " CallSiteKt" , exactOutput = INITIAL_OUTPUT )
@@ -302,10 +291,9 @@ class InlinedLambdaChangeTest : BaseCompilationTest() {
302
291
fun testAnonymousObjectBaseTypeChangeWithOverloads (strategyConfig : CompilerExecutionStrategyConfiguration ) {
303
292
scenario(strategyConfig) {
304
293
val lib = module(" ic-scenarios/inline-local-class/inline-anonymous-object-evil/lib" )
305
- val app = module (
294
+ val app = moduleWithInlineSnapshotting (
306
295
" ic-scenarios/inline-local-class/inline-anonymous-object-evil/app" ,
307
296
dependencies = listOf (lib),
308
- snapshotConfig = SnapshotConfig (ClassSnapshotGranularity .CLASS_MEMBER_LEVEL , true ),
309
297
)
310
298
311
299
app.execute(mainClass = " CallSiteKt" , exactOutput = INITIAL_OUTPUT )
@@ -318,6 +306,27 @@ class InlinedLambdaChangeTest : BaseCompilationTest() {
318
306
}
319
307
}
320
308
309
+ @DefaultStrategyAgnosticCompilationTest
310
+ @DisplayName(" Changes in inline function inside named inner class" )
311
+ @TestMetadata(" ic-scenarios/inline-named-inner/lib" )
312
+ fun testNamedInnerClassWithInlineFunction (strategyConfig : CompilerExecutionStrategyConfiguration ) {
313
+ scenario(strategyConfig) {
314
+ val lib = module(" ic-scenarios/inline-named-inner/lib" )
315
+ val app = moduleWithInlineSnapshotting(
316
+ " ic-scenarios/inline-named-inner/app" ,
317
+ dependencies = listOf (lib),
318
+ )
319
+
320
+ app.execute(mainClass = " CallSiteKt" , exactOutput = INITIAL_OUTPUT )
321
+
322
+ lib.replaceFileWithVersion(" inlinedInnerClass.kt" , " modified" )
323
+
324
+ lib.compile(expectedDirtySet = setOf (" inlinedInnerClass.kt" ))
325
+ app.compile(expectedDirtySet = setOf (" callSite.kt" ))
326
+ app.execute(mainClass = " CallSiteKt" , exactOutput = WITH_NEW_LAMBDA_BODY )
327
+ }
328
+ }
329
+
321
330
private companion object {
322
331
const val INITIAL_OUTPUT = " 42"
323
332
const val WITH_NEW_LAMBDA_BODY = " 45"
0 commit comments