[LL FIR] get rid of on-air resolve of partial type qualifiers
It's very slow and leads to performance problems (see KT-58125) Instead, we do the following: - For a fully resolved type qualifier, when we want to resolve its part, we are looking for the corresponding symbol by traversing nested classes bottom up. - For an error qualifier, we are trying to resolve the maximum possible qualifier in the types transformer where all the type scopes are already available. ^KT-58125 fixed
This commit is contained in:
committed by
Space Team
parent
51cf0ce3e5
commit
481962d5f6
+70
@@ -2158,5 +2158,75 @@ public class Fe10IdeNormalAnalysisSourceModuleReferenceResolveTestGenerated exte
|
||||
public void testWrongNumberOfTypeArgumentsInSupertype() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/referenceResolve/withErrors/WrongNumberOfTypeArgumentsInSupertype.kt");
|
||||
}
|
||||
|
||||
@Nested
|
||||
@TestMetadata("analysis/analysis-api/testData/referenceResolve/withErrors/partiallyUnresolvedTypeQualifier")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
public class PartiallyUnresolvedTypeQualifier {
|
||||
@Test
|
||||
public void testAllFilesPresentInPartiallyUnresolvedTypeQualifier() throws Exception {
|
||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/referenceResolve/withErrors/partiallyUnresolvedTypeQualifier"), Pattern.compile("^([^.]+)\\.kt$"), null, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("ClassNameBeforeOneUnsresolvedClass.kt")
|
||||
public void testClassNameBeforeOneUnsresolvedClass() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/referenceResolve/withErrors/partiallyUnresolvedTypeQualifier/ClassNameBeforeOneUnsresolvedClass.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("ClassNameBeforeOneUnsresolvedClassWithDot.kt")
|
||||
public void testClassNameBeforeOneUnsresolvedClassWithDot() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/referenceResolve/withErrors/partiallyUnresolvedTypeQualifier/ClassNameBeforeOneUnsresolvedClassWithDot.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("ClassNameBeforeOneUnsresolvedClassWithTwoResolved.kt")
|
||||
public void testClassNameBeforeOneUnsresolvedClassWithTwoResolved() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/referenceResolve/withErrors/partiallyUnresolvedTypeQualifier/ClassNameBeforeOneUnsresolvedClassWithTwoResolved.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("ClassNameBeforeOneUnsresolvedClassWithTwoResolvedWithDot.kt")
|
||||
public void testClassNameBeforeOneUnsresolvedClassWithTwoResolvedWithDot() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/referenceResolve/withErrors/partiallyUnresolvedTypeQualifier/ClassNameBeforeOneUnsresolvedClassWithTwoResolvedWithDot.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("ClassNameBeforeTwoUnsresolvedClasses.kt")
|
||||
public void testClassNameBeforeTwoUnsresolvedClasses() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/referenceResolve/withErrors/partiallyUnresolvedTypeQualifier/ClassNameBeforeTwoUnsresolvedClasses.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("ClassNameBeforeTwoUnsresolvedClassesTwoResolved.kt")
|
||||
public void testClassNameBeforeTwoUnsresolvedClassesTwoResolved() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/referenceResolve/withErrors/partiallyUnresolvedTypeQualifier/ClassNameBeforeTwoUnsresolvedClassesTwoResolved.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("ClassNameBeforeTwoUnsresolvedClassesWithDot.kt")
|
||||
public void testClassNameBeforeTwoUnsresolvedClassesWithDot() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/referenceResolve/withErrors/partiallyUnresolvedTypeQualifier/ClassNameBeforeTwoUnsresolvedClassesWithDot.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("ClassNameSecondQualifierBeforeOneUnsresolvedClass.kt")
|
||||
public void testClassNameSecondQualifierBeforeOneUnsresolvedClass() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/referenceResolve/withErrors/partiallyUnresolvedTypeQualifier/ClassNameSecondQualifierBeforeOneUnsresolvedClass.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("ClassNameSecondQualifierBeforeOneUnsresolvedClassWithDot.kt")
|
||||
public void testClassNameSecondQualifierBeforeOneUnsresolvedClassWithDot() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/referenceResolve/withErrors/partiallyUnresolvedTypeQualifier/ClassNameSecondQualifierBeforeOneUnsresolvedClassWithDot.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("ClassNameSecondQualifierBeforeOneUnsresolvedClassWithTwoResolvedWithDot.kt")
|
||||
public void testClassNameSecondQualifierBeforeOneUnsresolvedClassWithTwoResolvedWithDot() throws Exception {
|
||||
runTest("analysis/analysis-api/testData/referenceResolve/withErrors/partiallyUnresolvedTypeQualifier/ClassNameSecondQualifierBeforeOneUnsresolvedClassWithTwoResolvedWithDot.kt");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user