Force resolve imports for elements in imports
This commit is contained in:
@@ -123,7 +123,9 @@ public class ResolveSessionUtils {
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
PsiElement topmostCandidateForAdditionalResolve = JetPsiUtil.getTopmostParentOfTypes(expression,
|
||||
JetNamedFunction.class, JetClassInitializer.class, JetProperty.class, JetDelegationSpecifierList.class);
|
||||
JetNamedFunction.class, JetClassInitializer.class,
|
||||
JetProperty.class, JetDelegationSpecifierList.class,
|
||||
JetImportDirective.class);
|
||||
|
||||
if (topmostCandidateForAdditionalResolve != null) {
|
||||
if (topmostCandidateForAdditionalResolve instanceof JetNamedFunction) {
|
||||
@@ -139,6 +141,13 @@ public class ResolveSessionUtils {
|
||||
delegationSpecifierAdditionalResolve(resolveSession, (JetDelegationSpecifierList) topmostCandidateForAdditionalResolve,
|
||||
trace, file);
|
||||
}
|
||||
else if (topmostCandidateForAdditionalResolve instanceof JetImportDirective) {
|
||||
JetImportDirective importDirective = (JetImportDirective) topmostCandidateForAdditionalResolve;
|
||||
JetScope scope = resolveSession.getInjector().getScopeProvider().getFileScope((JetFile) importDirective.getContainingFile());
|
||||
|
||||
// Get all descriptors to force resolving all imports
|
||||
scope.getAllDescriptors();
|
||||
}
|
||||
else {
|
||||
assert false : "Invalid type of the topmost parent";
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
package testPackage.testOtherPackage
|
||||
|
||||
import testPackage.testOtherPackage.<caret>A
|
||||
|
||||
class A
|
||||
|
||||
// REF: (testPackage.testOtherPackage).A
|
||||
@@ -0,0 +1,7 @@
|
||||
package testPackage.testOtherPackage
|
||||
|
||||
import <caret>testPackage.testOtherPackage.A
|
||||
|
||||
class A
|
||||
|
||||
// REF: testPackage
|
||||
@@ -36,11 +36,21 @@ public class ReferenceResolveTestGenerated extends AbstractResolveBaseTest {
|
||||
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("idea/testData/resolve/references"), Pattern.compile("^(.+)\\.kt$"), true);
|
||||
}
|
||||
|
||||
@TestMetadata("ClassReferenceInImport.kt")
|
||||
public void testClassReferenceInImport() throws Exception {
|
||||
doTest("idea/testData/resolve/references/ClassReferenceInImport.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("CtrlClickResolve.kt")
|
||||
public void testCtrlClickResolve() throws Exception {
|
||||
doTest("idea/testData/resolve/references/CtrlClickResolve.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("PackageReferenceInImport.kt")
|
||||
public void testPackageReferenceInImport() throws Exception {
|
||||
doTest("idea/testData/resolve/references/PackageReferenceInImport.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("ResolveClass.kt")
|
||||
public void testResolveClass() throws Exception {
|
||||
doTest("idea/testData/resolve/references/ResolveClass.kt");
|
||||
|
||||
Reference in New Issue
Block a user