Fix error on getting descriptor for class object
This commit is contained in:
@@ -259,9 +259,7 @@ public class ResolveSession implements KotlinCodeAnalyzer {
|
||||
|
||||
@Override
|
||||
public DeclarationDescriptor visitClassObject(JetClassObject classObject, Void data) {
|
||||
DeclarationDescriptor containingDeclaration =
|
||||
getInjector().getScopeProvider().getResolutionScopeForDeclaration(classObject).getContainingDeclaration();
|
||||
return ((ClassDescriptor) containingDeclaration).getClassObjectDescriptor();
|
||||
return getClassObjectDescriptor(classObject);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
package testing
|
||||
|
||||
object Testing {
|
||||
class object {
|
||||
<caret>va
|
||||
}
|
||||
}
|
||||
|
||||
/// Should not fall on temp references in invalid code
|
||||
// REF_EMPTY
|
||||
@@ -53,8 +53,16 @@ public abstract class AbstractResolveBaseTest extends LightCodeInsightTestCase {
|
||||
}
|
||||
|
||||
protected static void doSingleResolveTest() {
|
||||
boolean shouldBeUnresolved = InTextDirectivesUtils.isDirectiveDefined(getFile().getText(), "REF_EMPTY");
|
||||
String referenceToString = InTextDirectivesUtils.findStringWithPrefixes(getFile().getText(), "REF:");
|
||||
Assert.assertNotNull("Test data wasn't found, use \"// REF: \" directive", referenceToString);
|
||||
|
||||
if (shouldBeUnresolved) {
|
||||
Assert.assertNull("REF: directives will be ignored for REF_EMPTY test", referenceToString);
|
||||
referenceToString = "<empty>";
|
||||
}
|
||||
else {
|
||||
Assert.assertNotNull("Test data wasn't found, use \"// REF: \" directive", referenceToString);
|
||||
}
|
||||
|
||||
int offset = getEditor().getCaretModel().getOffset();
|
||||
PsiReference psiReference = getFile().findReferenceAt(offset);
|
||||
@@ -67,9 +75,11 @@ public abstract class AbstractResolveBaseTest extends LightCodeInsightTestCase {
|
||||
assertEquals(notEqualMessage, referenceToString, resolvedToElementStr);
|
||||
}
|
||||
else {
|
||||
Assert.assertNull(
|
||||
String.format("Element %s wasn't resolved to anything, but %s was expected", psiReference, referenceToString),
|
||||
referenceToString);
|
||||
if (!shouldBeUnresolved) {
|
||||
Assert.assertNull(
|
||||
String.format("Element %s wasn't resolved to anything, but %s was expected", psiReference, referenceToString),
|
||||
referenceToString);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -106,6 +106,11 @@ public class ReferenceResolveTestGenerated extends AbstractResolveBaseTest {
|
||||
doTest("idea/testData/resolve/references/PackageReferenceInImport.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("PropertyPlaceInClassObjectInObject.kt")
|
||||
public void testPropertyPlaceInClassObjectInObject() throws Exception {
|
||||
doTest("idea/testData/resolve/references/PropertyPlaceInClassObjectInObject.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("ReferenceInClassWhereConstraint.kt")
|
||||
public void testReferenceInClassWhereConstraint() throws Exception {
|
||||
doTest("idea/testData/resolve/references/ReferenceInClassWhereConstraint.kt");
|
||||
|
||||
Reference in New Issue
Block a user