JetObjectDeclarationName is no longer JetDeclaration
Fix lazy resolve descriptor renderer tests after object refactoring
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -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));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user