JetObjectDeclarationName is no longer JetDeclaration

Fix lazy resolve descriptor renderer tests after object refactoring
This commit is contained in:
Alexander Udalov
2013-11-15 19:23:02 +04:00
parent f0e230cf23
commit 0792af5f85
6 changed files with 36 additions and 21 deletions
@@ -17,16 +17,47 @@
package org.jetbrains.jet.lang.psi;
import com.intellij.lang.ASTNode;
import com.intellij.psi.PsiElement;
import com.intellij.psi.search.SearchScope;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lexer.JetTokens;
public class JetObjectDeclarationName extends JetNamedDeclarationNotStubbed {
public class JetObjectDeclarationName extends JetExpressionImpl {
public JetObjectDeclarationName(@NotNull ASTNode node) {
super(node);
}
@Override
@Nullable
public String getName() {
PsiElement identifier = getNameIdentifier();
if (identifier != null) {
String text = identifier.getText();
return text != null ? JetPsiUtil.unquoteIdentifier(text) : null;
}
else {
return null;
}
}
public PsiElement getNameIdentifier() {
return findChildByType(JetTokens.IDENTIFIER);
}
public PsiElement setName(@NonNls @NotNull String name) throws IncorrectOperationException {
return getNameIdentifier().replace(JetPsiFactory.createNameIdentifier(getProject(), name));
}
@Override
public int getTextOffset() {
PsiElement identifier = getNameIdentifier();
return identifier != null ? identifier.getTextRange().getStartOffset() : getTextRange().getStartOffset();
}
@Override
public void accept(@NotNull JetVisitorVoid visitor) {
visitor.visitObjectDeclarationName(this);
@@ -383,7 +383,7 @@ public class JetVisitor<R, D> extends PsiElementVisitor {
}
public R visitObjectDeclarationName(@NotNull JetObjectDeclarationName declarationName, D data) {
return visitNamedDeclaration(declarationName, data);
return visitExpression(declarationName, data);
}
public R visitStringTemplateEntry(@NotNull JetStringTemplateEntry entry, D data) {
@@ -373,7 +373,7 @@ public class JetVisitorVoid extends PsiElementVisitor {
}
public void visitObjectDeclarationName(@NotNull JetObjectDeclarationName declaration) {
visitNamedDeclaration(declaration);
visitExpression(declaration);
}
public void visitStringTemplateEntry(@NotNull JetStringTemplateEntry entry) {
@@ -332,13 +332,6 @@ public class ResolveSession implements KotlinCodeAnalyzer {
return getBindingContext().get(BindingContext.DECLARATION_TO_DESCRIPTOR, property);
}
@Override
public DeclarationDescriptor visitObjectDeclarationName(@NotNull JetObjectDeclarationName declarationName, Void data) {
JetScope scopeForDeclaration = getInjector().getScopeProvider().getResolutionScopeForDeclaration(declarationName.getParent());
scopeForDeclaration.getProperties(safeNameForLazyResolve(declarationName));
return getBindingContext().get(BindingContext.DECLARATION_TO_DESCRIPTOR, declarationName);
}
@Override
public DeclarationDescriptor visitJetElement(@NotNull JetElement element, Void data) {
throw new IllegalArgumentException("Unsupported declaration type: " + element + " " +
@@ -137,21 +137,12 @@ public class ScopeProvider {
return getFileScope((JetFile) elementOfDeclaration.getContainingFile());
}
assert jetDeclaration != null : "Can't happen because of getParentOfType(null, ?) == null";
if (parentDeclaration instanceof JetClassOrObject) {
JetClassOrObject classOrObject = (JetClassOrObject) parentDeclaration;
LazyClassDescriptor classDescriptor = (LazyClassDescriptor) resolveSession.getClassDescriptor(classOrObject);
if (jetDeclaration instanceof JetClassInitializer || jetDeclaration instanceof JetProperty) {
return classDescriptor.getScopeForPropertyInitializerResolution();
}
if (jetDeclaration instanceof JetEnumEntry) {
LazyClassDescriptor descriptor = (LazyClassDescriptor) classDescriptor.getClassObjectDescriptor();
assert descriptor != null : "There should be class object descriptor for enum class " + parentDeclaration.getText() +
" on entry " + jetDeclaration.getText();
return descriptor.getScopeForMemberDeclarationResolution();
}
return classDescriptor.getScopeForMemberDeclarationResolution();
}
@@ -247,7 +247,7 @@ public abstract class AbstractLazyMemberScope<D extends DeclarationDescriptor, D
}
else if (declaration instanceof JetObjectDeclaration) {
JetObjectDeclaration objectDeclaration = (JetObjectDeclaration) declaration;
Name name = safeNameForLazyResolve(objectDeclaration.getNameAsDeclaration());
Name name = safeNameForLazyResolve(objectDeclaration);
result.all.addAll(getProperties(name));
result.objects.add(getObjectDescriptor(name));
}