Skip to content

Commit 5167de9

Browse files
committed
Add more tests for header compilation.
^KT-78422
1 parent 1c5dd2f commit 5167de9

File tree

6 files changed

+72
-0
lines changed

6 files changed

+72
-0
lines changed

compiler/fir/analysis-tests/testData/resolve/headerMode/classDeclaration.fir.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,12 @@ FILE: classDeclaration.kt
2121

2222
public final fun funD(): R|kotlin/Int|
2323

24+
public final inline fun funE(): R|kotlin/String| {
25+
local final fun funF(): R|kotlin/String|
26+
27+
^funE R|<local>/funF|()
28+
}
29+
2430
}
2531
public abstract interface B : R|kotlin/Any| {
2632
public open fun funA(): R|kotlin/String|

compiler/fir/analysis-tests/testData/resolve/headerMode/classDeclaration.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@ class A {
2525
}
2626

2727
fun funD() = 1 + 2
28+
29+
inline fun funE(): String {
30+
fun funF() = "funF body"
31+
return funF()
32+
}
2833
}
2934

3035
interface B {

compiler/fir/analysis-tests/testData/resolve/headerMode/functionDeclaration.fir.txt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,23 @@ FILE: functionDeclaration.kt
1111

1212
private final fun funC(): R|kotlin/String|
1313
public final fun funD(): R|kotlin/Int|
14+
public final inline fun funE(): R|kotlin/String| {
15+
local final fun funF(): R|kotlin/String|
16+
17+
^funE R|<local>/funF|()
18+
}
19+
public final inline fun funG(): R|kotlin/String| {
20+
local final class classA : R|kotlin/Any| {
21+
public constructor(): R|<local>/classA| {
22+
super<R|kotlin/Any|>()
23+
}
24+
25+
public final fun funH(): R|kotlin/String|
26+
27+
}
28+
29+
lval a: R|<local>/classA| = R|<local>/classA.classA|()
30+
^funG R|<local>/a|.R|<local>/funH|()
31+
}
32+
public final fun funI(): R|kotlin/Int|
33+
public final fun funJ(): R|kotlin/String|

compiler/fir/analysis-tests/testData/resolve/headerMode/functionDeclaration.kt

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,17 @@
33
import kotlin.contracts.ExperimentalContracts
44
import kotlin.contracts.contract
55

6+
// Public function
67
fun funA(): String {
78
return "funA body"
89
}
910

11+
// Inline function
1012
inline fun funB(): String {
1113
return "funB body"
1214
}
1315

16+
// Function with contract
1417
@OptIn(ExperimentalContracts::class)
1518
fun isNotNull(value: Any?): Boolean {
1619
contract {
@@ -19,11 +22,38 @@ fun isNotNull(value: Any?): Boolean {
1922
return value != null
2023
}
2124

25+
// Private function
2226
private fun funC(): String {
2327
return "funC body"
2428
}
2529

30+
// Implicit return type
2631
fun funD() = 1 + 2
2732

33+
// Function inside a function
34+
inline fun funE(): String {
35+
fun funF(): String {
36+
return "funF body"
37+
}
38+
return funF()
39+
}
40+
41+
// Class inside a function
42+
inline fun funG(): String {
43+
class classA {
44+
fun funH() = "funH body"
45+
}
46+
val a = classA()
47+
return a.funH()
48+
}
49+
50+
// Implicit type reference from another function.
51+
fun funI() = funD()
52+
53+
fun funJ(): String {
54+
inline fun funK() = "funK body"
55+
return funK()
56+
}
57+
2858
/* GENERATED_FIR_TAGS: classReference, contractConditionalEffect, contracts, functionDeclaration, inline, nullableType,
2959
stringLiteral */

compiler/fir/analysis-tests/testData/resolve/headerMode/objectDeclaration.fir.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,10 @@ FILE: objectDeclaration.kt
2121

2222
public final fun funD(): R|kotlin/Int|
2323

24+
public final inline fun funE(): R|kotlin/String| {
25+
local final fun funF(): R|kotlin/String|
26+
27+
^funE R|<local>/funF|()
28+
}
29+
2430
}

compiler/fir/analysis-tests/testData/resolve/headerMode/objectDeclaration.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@ object A {
2525
}
2626

2727
fun funD() = 1 + 2
28+
29+
inline fun funE(): String {
30+
fun funF() = "funF body"
31+
return funF()
32+
}
2833
}
2934

3035
/* GENERATED_FIR_TAGS: classReference, contractConditionalEffect, contracts, functionDeclaration, inline, nullableType,

0 commit comments

Comments
 (0)