commit | 1ec14c1ee7c127d81881d0d1abe488f912ee4d35 | [log] [tgz] |
---|---|---|
author | Yan Zhulanow <yan.zhulanow@jetbrains.com> | Fri Jan 20 18:01:46 2023 +0900 |
committer | Yan Zhulanow <yan.zhulanow@jetbrains.com> | Tue Jan 24 21:02:28 2023 +0900 |
tree | 2ac1afc8cc03e2ef17d4c3f242e67e4b9548a843 | |
parent | 410822960f5de60dffd196c7e41358b1905ca0a9 [diff] |
[LL API] Avoid designation path calculation for illegal class names
diff --git a/analysis/analysis-api/testData/components/psiTypeProvider/psiType/forExpression/class_object_constructor.txt b/analysis/analysis-api/testData/components/psiTypeProvider/psiType/forExpression/class_object_constructor.txt index 1fbc095..65c2dbc 100644 --- a/analysis/analysis-api/testData/components/psiTypeProvider/psiType/forExpression/class_object_constructor.txt +++ b/analysis/analysis-api/testData/components/psiTypeProvider/psiType/forExpression/class_object_constructor.txt
@@ -1,2 +1,2 @@ -KtType: Outer.`<no name provided>`.Inner +KtType: Inner PsiType: null
diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/FirDesignation.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/FirDesignation.kt index 4a021d1..a763ea9 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/FirDesignation.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/api/FirDesignation.kt
@@ -124,8 +124,11 @@ return declaration } - val chain = generateSequence(containingClassId) { it.outerClassId }.map { resolveChunk(it) } - return chain.toMutableList().also { it.reverse() } + return generateSequence(containingClassId) { it.outerClassId } + .dropWhile { it.shortClassName.isSpecial } + .map { resolveChunk(it) } + .toList() + .asReversed() } private fun getTargetSession(target: FirDeclaration): FirSession {
diff --git a/compiler/testData/diagnostics/tests/dataClasses/dataObjectLiteral.fir.kt b/compiler/testData/diagnostics/tests/dataClasses/dataObjectLiteral.fir.kt new file mode 100644 index 0000000..e4f4174 --- /dev/null +++ b/compiler/testData/diagnostics/tests/dataClasses/dataObjectLiteral.fir.kt
@@ -0,0 +1,10 @@ +// FIR_COMPARISON +// LANGUAGE: +DataObjects + +interface I { + fun foo() +} + +val o = <!UNRESOLVED_REFERENCE!>data<!><!SYNTAX!><!> object<!SYNTAX!><!>: I { + <!WRONG_MODIFIER_CONTAINING_DECLARATION!>override<!> fun foo() {} +}
diff --git a/compiler/testData/diagnostics/tests/dataClasses/dataObjectLiteral.kt b/compiler/testData/diagnostics/tests/dataClasses/dataObjectLiteral.kt index c80e42f..e25a782 100644 --- a/compiler/testData/diagnostics/tests/dataClasses/dataObjectLiteral.kt +++ b/compiler/testData/diagnostics/tests/dataClasses/dataObjectLiteral.kt
@@ -1,4 +1,4 @@ -// FIR_IDENTICAL +// FIR_COMPARISON // LANGUAGE: +DataObjects interface I {