Fix error on getting descriptor for class object

This commit is contained in:
Nikolay Krasko
2013-07-26 21:08:46 +04:00
parent 400906db7c
commit 2b0232307c
4 changed files with 30 additions and 7 deletions
@@ -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");