Skip to content

Commit c6ef88c

Browse files
BlaBlaHumanSpace Team
authored andcommitted
[Analysis API] Adjust the way AbstractTypeCreatorDslTests retrieves typealiased types
The test reuses the regular test infrastructure to retrieve base types from various expressions. However, return types of expressions are always expanded, which makes it harder to catch issues with aliased types. ^KT-65912
1 parent 3c9503c commit c6ef88c

19 files changed

+376
-190
lines changed

analysis/analysis-api-impl-base/testFixtures/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/components/typeCreator/AbstractBuildClassTypeTest.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.analysis.api.impl.base.test.cases.components.typeCr
88
import org.jetbrains.kotlin.analysis.api.components.KaClassTypeBuilder
99
import org.jetbrains.kotlin.analysis.api.renderer.types.impl.KaTypeRendererForDebug
1010
import org.jetbrains.kotlin.analysis.api.symbols.DebugSymbolRenderer
11+
import org.jetbrains.kotlin.analysis.api.types.abbreviationOrSelf
1112
import org.jetbrains.kotlin.analysis.api.types.symbol
1213
import org.jetbrains.kotlin.analysis.test.framework.base.AbstractAnalysisApiBasedTest
1314
import org.jetbrains.kotlin.analysis.test.framework.projectStructure.KtTestModule
@@ -54,12 +55,13 @@ abstract class AbstractBuildClassTypeTest : AbstractAnalysisApiBasedTest() {
5455
val actual = copyAwareAnalyzeForTest(mainFile) { contextFile ->
5556
val targetExpression = testServices.expressionMarkerProvider
5657
.getBottommostSelectedElementOfType(contextFile, KtExpression::class)
57-
val expressionType = targetExpression.expressionType ?: error("Expression type is null")
58+
val expressionType = targetExpression.expressionType?.abbreviationOrSelf ?: error("Expression type is null")
5859
val allTypesById = testServices.expressionMarkerProvider.getAllCarets(contextFile).associate { caret ->
5960
val qualifier = caret.qualifier
6061
val caretExpression =
6162
testServices.expressionMarkerProvider.getBottommostElementOfTypeAtCaret<KtExpression>(contextFile, qualifier)
62-
val expressionType = caretExpression.expressionType ?: error("Expression under $qualifier doesn't have a type")
63+
val expressionType =
64+
caretExpression.expressionType?.abbreviationOrSelf ?: error("Expression under $qualifier doesn't have a type")
6365
val id = caret.qualifier.toIntOrNull() ?: error("Caret qualifier $qualifier is not a number")
6466

6567
id to expressionType

analysis/analysis-api-impl-base/testFixtures/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/types/typeCreation/AbstractTypeCreatorDslTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,11 +144,11 @@ abstract class AbstractTypeCreatorDslTest : AbstractAnalysisApiBasedTest() {
144144
}
145145

146146
protected fun getTypeByCaret(label: String): KaType {
147-
return caretToType[label] ?: error("No type for `$label`")
147+
return caretToType[label]?.abbreviationOrSelf ?: error("No type for `$label`")
148148
}
149149

150150
protected fun getClassLikeSymbolByCaret(label: String): KaClassLikeSymbol {
151-
return caretToType[label]?.symbol ?: error("No symbol for `$label`")
151+
return caretToType[label]?.abbreviationOrSelf?.symbol ?: error("No symbol for `$label`")
152152
}
153153

154154
protected fun getTypeParameterSymbolByCaret(label: String): KaTypeParameterSymbol {
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
CLASS_TYPE_BY_CLASS_ID
2+
TYPE:
3+
KaClassErrorType:
4+
abbreviation: null
5+
annotations: []
6+
candidateSymbols: []
7+
errorMessage: Unresolved class Alias
8+
presentableText: Alias
9+
qualifiers: [
10+
KaUnresolvedClassTypeQualifier:
11+
name: Alias
12+
typeArguments: []
13+
]
14+
isMarkedNullable: false
15+
isNullable: false
16+
hasFlexibleNullability: false
17+
RENDERED TYPE:
18+
ERROR_TYPE(Unresolved class Alias)
19+
20+
CLASS_TYPE_BY_SYMBOL
21+
TYPE:
22+
KaClassErrorType:
23+
abbreviation: null
24+
annotations: []
25+
candidateSymbols: []
26+
errorMessage: Unresolved class Alias
27+
presentableText: Alias
28+
qualifiers: [
29+
KaUnresolvedClassTypeQualifier:
30+
name: Alias
31+
typeArguments: []
32+
]
33+
isMarkedNullable: false
34+
isNullable: false
35+
hasFlexibleNullability: false
36+
RENDERED TYPE:
37+
ERROR_TYPE(Unresolved class Alias)

analysis/analysis-api/testData/components/typeCreator/classType/typeAlias.txt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,37 +3,37 @@ TYPE:
33
KaUsualClassType:
44
abbreviation: null
55
annotations: []
6-
classId: A
6+
classId: Alias
77
qualifiers: [
88
KaResolvedClassTypeQualifier:
9-
name: A
10-
symbol: KaNamedClassSymbol(A)
9+
name: Alias
10+
symbol: KaTypeAliasSymbol(Alias)
1111
typeArguments: []
1212
]
13-
symbol: KaNamedClassSymbol(A)
13+
symbol: KaTypeAliasSymbol(Alias)
1414
typeArguments: []
1515
isMarkedNullable: false
1616
isNullable: false
1717
hasFlexibleNullability: false
1818
RENDERED TYPE:
19-
A
19+
Alias /* = A */
2020

2121
CLASS_TYPE_BY_SYMBOL
2222
TYPE:
2323
KaUsualClassType:
2424
abbreviation: null
2525
annotations: []
26-
classId: A
26+
classId: Alias
2727
qualifiers: [
2828
KaResolvedClassTypeQualifier:
29-
name: A
30-
symbol: KaNamedClassSymbol(A)
29+
name: Alias
30+
symbol: KaTypeAliasSymbol(Alias)
3131
typeArguments: []
3232
]
33-
symbol: KaNamedClassSymbol(A)
33+
symbol: KaTypeAliasSymbol(Alias)
3434
typeArguments: []
3535
isMarkedNullable: false
3636
isNullable: false
3737
hasFlexibleNullability: false
3838
RENDERED TYPE:
39-
A
39+
Alias /* = A */
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
CLASS_TYPE_BY_CLASS_ID
2+
TYPE:
3+
KaUsualClassType:
4+
abbreviation: null
5+
annotations: []
6+
classId: A
7+
qualifiers: [
8+
KaResolvedClassTypeQualifier:
9+
name: A
10+
symbol: KaNamedClassSymbol(A)
11+
typeArguments: [
12+
KaUsualClassType:
13+
abbreviation: null
14+
annotations: []
15+
classId: MyAlias
16+
qualifiers: [
17+
KaResolvedClassTypeQualifier:
18+
name: MyAlias
19+
symbol: KaTypeAliasSymbol(MyAlias)
20+
typeArguments: []
21+
]
22+
symbol: KaTypeAliasSymbol(MyAlias)
23+
typeArguments: []
24+
isMarkedNullable: false
25+
isNullable: false
26+
hasFlexibleNullability: false
27+
]
28+
]
29+
symbol: KaNamedClassSymbol(A)
30+
typeArguments: [
31+
KaUsualClassType:
32+
abbreviation: null
33+
annotations: []
34+
classId: MyAlias
35+
qualifiers: [
36+
KaResolvedClassTypeQualifier:
37+
name: MyAlias
38+
symbol: KaTypeAliasSymbol(MyAlias)
39+
typeArguments: []
40+
]
41+
symbol: KaTypeAliasSymbol(MyAlias)
42+
typeArguments: []
43+
isMarkedNullable: false
44+
isNullable: false
45+
hasFlexibleNullability: false
46+
]
47+
isMarkedNullable: false
48+
isNullable: false
49+
hasFlexibleNullability: false
50+
RENDERED TYPE:
51+
A<MyAlias /* = MyAlias */>
52+
53+
CLASS_TYPE_BY_SYMBOL
54+
TYPE:
55+
KaUsualClassType:
56+
abbreviation: null
57+
annotations: []
58+
classId: A
59+
qualifiers: [
60+
KaResolvedClassTypeQualifier:
61+
name: A
62+
symbol: KaNamedClassSymbol(A)
63+
typeArguments: [
64+
KaUsualClassType:
65+
abbreviation: null
66+
annotations: []
67+
classId: MyAlias
68+
qualifiers: [
69+
KaResolvedClassTypeQualifier:
70+
name: MyAlias
71+
symbol: KaTypeAliasSymbol(MyAlias)
72+
typeArguments: []
73+
]
74+
symbol: KaTypeAliasSymbol(MyAlias)
75+
typeArguments: []
76+
isMarkedNullable: false
77+
isNullable: false
78+
hasFlexibleNullability: false
79+
]
80+
]
81+
symbol: KaNamedClassSymbol(A)
82+
typeArguments: [
83+
KaUsualClassType:
84+
abbreviation: null
85+
annotations: []
86+
classId: MyAlias
87+
qualifiers: [
88+
KaResolvedClassTypeQualifier:
89+
name: MyAlias
90+
symbol: KaTypeAliasSymbol(MyAlias)
91+
typeArguments: []
92+
]
93+
symbol: KaTypeAliasSymbol(MyAlias)
94+
typeArguments: []
95+
isMarkedNullable: false
96+
isNullable: false
97+
hasFlexibleNullability: false
98+
]
99+
isMarkedNullable: false
100+
isNullable: false
101+
hasFlexibleNullability: false
102+
RENDERED TYPE:
103+
A<MyAlias /* = MyAlias */>

analysis/analysis-api/testData/components/typeCreator/classType/typeAliasAsArgument.txt

Lines changed: 20 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -10,30 +10,16 @@ KaUsualClassType:
1010
symbol: KaNamedClassSymbol(A)
1111
typeArguments: [
1212
KaUsualClassType:
13-
abbreviation: KaUsualClassType:
14-
abbreviation: null
15-
annotations: []
16-
classId: MyAlias
17-
qualifiers: [
18-
KaResolvedClassTypeQualifier:
19-
name: MyAlias
20-
symbol: KaTypeAliasSymbol(MyAlias)
21-
typeArguments: []
22-
]
23-
symbol: KaTypeAliasSymbol(MyAlias)
24-
typeArguments: []
25-
isMarkedNullable: false
26-
isNullable: false
27-
hasFlexibleNullability: false
13+
abbreviation: null
2814
annotations: []
29-
classId: B
15+
classId: MyAlias
3016
qualifiers: [
3117
KaResolvedClassTypeQualifier:
32-
name: B
33-
symbol: KaNamedClassSymbol(B)
18+
name: MyAlias
19+
symbol: KaTypeAliasSymbol(MyAlias)
3420
typeArguments: []
3521
]
36-
symbol: KaNamedClassSymbol(B)
22+
symbol: KaTypeAliasSymbol(MyAlias)
3723
typeArguments: []
3824
isMarkedNullable: false
3925
isNullable: false
@@ -43,30 +29,16 @@ KaUsualClassType:
4329
symbol: KaNamedClassSymbol(A)
4430
typeArguments: [
4531
KaUsualClassType:
46-
abbreviation: KaUsualClassType:
47-
abbreviation: null
48-
annotations: []
49-
classId: MyAlias
50-
qualifiers: [
51-
KaResolvedClassTypeQualifier:
52-
name: MyAlias
53-
symbol: KaTypeAliasSymbol(MyAlias)
54-
typeArguments: []
55-
]
56-
symbol: KaTypeAliasSymbol(MyAlias)
57-
typeArguments: []
58-
isMarkedNullable: false
59-
isNullable: false
60-
hasFlexibleNullability: false
32+
abbreviation: null
6133
annotations: []
62-
classId: B
34+
classId: MyAlias
6335
qualifiers: [
6436
KaResolvedClassTypeQualifier:
65-
name: B
66-
symbol: KaNamedClassSymbol(B)
37+
name: MyAlias
38+
symbol: KaTypeAliasSymbol(MyAlias)
6739
typeArguments: []
6840
]
69-
symbol: KaNamedClassSymbol(B)
41+
symbol: KaTypeAliasSymbol(MyAlias)
7042
typeArguments: []
7143
isMarkedNullable: false
7244
isNullable: false
@@ -90,30 +62,16 @@ KaUsualClassType:
9062
symbol: KaNamedClassSymbol(A)
9163
typeArguments: [
9264
KaUsualClassType:
93-
abbreviation: KaUsualClassType:
94-
abbreviation: null
95-
annotations: []
96-
classId: MyAlias
97-
qualifiers: [
98-
KaResolvedClassTypeQualifier:
99-
name: MyAlias
100-
symbol: KaTypeAliasSymbol(MyAlias)
101-
typeArguments: []
102-
]
103-
symbol: KaTypeAliasSymbol(MyAlias)
104-
typeArguments: []
105-
isMarkedNullable: false
106-
isNullable: false
107-
hasFlexibleNullability: false
65+
abbreviation: null
10866
annotations: []
109-
classId: B
67+
classId: MyAlias
11068
qualifiers: [
11169
KaResolvedClassTypeQualifier:
112-
name: B
113-
symbol: KaNamedClassSymbol(B)
70+
name: MyAlias
71+
symbol: KaTypeAliasSymbol(MyAlias)
11472
typeArguments: []
11573
]
116-
symbol: KaNamedClassSymbol(B)
74+
symbol: KaTypeAliasSymbol(MyAlias)
11775
typeArguments: []
11876
isMarkedNullable: false
11977
isNullable: false
@@ -123,30 +81,16 @@ KaUsualClassType:
12381
symbol: KaNamedClassSymbol(A)
12482
typeArguments: [
12583
KaUsualClassType:
126-
abbreviation: KaUsualClassType:
127-
abbreviation: null
128-
annotations: []
129-
classId: MyAlias
130-
qualifiers: [
131-
KaResolvedClassTypeQualifier:
132-
name: MyAlias
133-
symbol: KaTypeAliasSymbol(MyAlias)
134-
typeArguments: []
135-
]
136-
symbol: KaTypeAliasSymbol(MyAlias)
137-
typeArguments: []
138-
isMarkedNullable: false
139-
isNullable: false
140-
hasFlexibleNullability: false
84+
abbreviation: null
14185
annotations: []
142-
classId: B
86+
classId: MyAlias
14387
qualifiers: [
14488
KaResolvedClassTypeQualifier:
145-
name: B
146-
symbol: KaNamedClassSymbol(B)
89+
name: MyAlias
90+
symbol: KaTypeAliasSymbol(MyAlias)
14791
typeArguments: []
14892
]
149-
symbol: KaNamedClassSymbol(B)
93+
symbol: KaTypeAliasSymbol(MyAlias)
15094
typeArguments: []
15195
isMarkedNullable: false
15296
isNullable: false

0 commit comments

Comments
 (0)