Using isTopLevelDeclaration instaed of a direct instanceof check

This commit is contained in:
Andrey Breslav
2013-01-17 11:51:45 +04:00
parent a089054b1a
commit aa39519323
8 changed files with 15 additions and 15 deletions
@@ -31,6 +31,7 @@ import org.jetbrains.jet.codegen.state.GenerationState;
import org.jetbrains.jet.codegen.state.JetTypeMapper; import org.jetbrains.jet.codegen.state.JetTypeMapper;
import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall; import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall;
import org.jetbrains.jet.lang.resolve.java.AsmTypeConstants; import org.jetbrains.jet.lang.resolve.java.AsmTypeConstants;
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver; import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
@@ -191,7 +192,7 @@ public class AsmUtil {
Classes in byte code should be public or package private Classes in byte code should be public or package private
*/ */
public static int getVisibilityAccessFlagForClass(ClassDescriptor descriptor) { public static int getVisibilityAccessFlagForClass(ClassDescriptor descriptor) {
if (descriptor.getContainingDeclaration() instanceof NamespaceDescriptor || if (DescriptorUtils.isTopLevelDeclaration(descriptor) ||
descriptor.getVisibility() == Visibilities.PUBLIC || descriptor.getVisibility() == Visibilities.PUBLIC ||
descriptor.getVisibility() == Visibilities.INTERNAL) { descriptor.getVisibility() == Visibilities.INTERNAL) {
return ACC_PUBLIC; return ACC_PUBLIC;
@@ -22,6 +22,7 @@ import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.BindingTrace; import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
import org.jetbrains.jet.lang.resolve.java.JvmAbi; import org.jetbrains.jet.lang.resolve.java.JvmAbi;
import org.jetbrains.jet.lang.resolve.java.JvmClassName; import org.jetbrains.jet.lang.resolve.java.JvmClassName;
import org.jetbrains.jet.lang.resolve.java.PackageClassUtils; import org.jetbrains.jet.lang.resolve.java.PackageClassUtils;
@@ -196,8 +197,8 @@ class CodegenAnnotatingVisitor extends JetVisitorVoid {
private String getName(ClassDescriptor classDescriptor) { private String getName(ClassDescriptor classDescriptor) {
String base = peekFromStack(nameStack); String base = peekFromStack(nameStack);
return classDescriptor.getContainingDeclaration() instanceof NamespaceDescriptor ? base.isEmpty() ? classDescriptor.getName() return DescriptorUtils.isTopLevelDeclaration(classDescriptor) ? base.isEmpty() ? classDescriptor.getName()
.getName() : base + '/' + classDescriptor.getName() : base + '$' + classDescriptor.getName(); .getName() : base + '/' + classDescriptor.getName() : base + '$' + classDescriptor.getName();
} }
@Override @Override
@@ -231,11 +231,6 @@ public class DescriptorUtils {
} }
} }
public static boolean isTopLevelNamespace(@NotNull NamespaceDescriptor namespaceDescriptor) {
return namespaceDescriptor.getContainingDeclaration() instanceof NamespaceDescriptor
&& namespaceDescriptor.getContainingDeclaration().getContainingDeclaration() instanceof ModuleDescriptor;
}
public static boolean isRootNamespace(@NotNull NamespaceDescriptor namespaceDescriptor) { public static boolean isRootNamespace(@NotNull NamespaceDescriptor namespaceDescriptor) {
return namespaceDescriptor.getContainingDeclaration() instanceof ModuleDescriptor; return namespaceDescriptor.getContainingDeclaration() instanceof ModuleDescriptor;
} }
@@ -400,7 +395,7 @@ public class DescriptorUtils {
public static boolean isExternallyAccessible(PropertyDescriptor propertyDescriptor) { public static boolean isExternallyAccessible(PropertyDescriptor propertyDescriptor) {
return propertyDescriptor.getVisibility() != Visibilities.PRIVATE || isClassObject(propertyDescriptor.getContainingDeclaration()) return propertyDescriptor.getVisibility() != Visibilities.PRIVATE || isClassObject(propertyDescriptor.getContainingDeclaration())
|| propertyDescriptor.getContainingDeclaration() instanceof NamespaceDescriptor; || isTopLevelDeclaration(propertyDescriptor);
} }
@NotNull @NotNull
@@ -333,7 +333,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
} }
private void renderModalityForCallable(@NotNull CallableMemberDescriptor callable, @NotNull StringBuilder builder) { private void renderModalityForCallable(@NotNull CallableMemberDescriptor callable, @NotNull StringBuilder builder) {
if (!(callable.getContainingDeclaration() instanceof NamespaceDescriptor) || callable.getModality() != Modality.FINAL) { if (!DescriptorUtils.isTopLevelDeclaration(callable) || callable.getModality() != Modality.FINAL) {
renderModality(callable.getModality(), builder); renderModality(callable.getModality(), builder);
} }
} }
@@ -21,6 +21,7 @@ import com.intellij.psi.PsiElement;
import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
public class FunctionsHighlightingVisitor extends AfterAnalysisHighlightingVisitor { public class FunctionsHighlightingVisitor extends AfterAnalysisHighlightingVisitor {
public FunctionsHighlightingVisitor(AnnotationHolder holder, BindingContext bindingContext) { public FunctionsHighlightingVisitor(AnnotationHolder holder, BindingContext bindingContext) {
@@ -65,7 +66,7 @@ public class FunctionsHighlightingVisitor extends AfterAnalysisHighlightingVisit
else if (calleeDescriptor instanceof FunctionDescriptor) { else if (calleeDescriptor instanceof FunctionDescriptor) {
FunctionDescriptor fun = (FunctionDescriptor)calleeDescriptor; FunctionDescriptor fun = (FunctionDescriptor)calleeDescriptor;
JetPsiChecker.highlightName(holder, callee, JetHighlightingColors.FUNCTION_CALL); JetPsiChecker.highlightName(holder, callee, JetHighlightingColors.FUNCTION_CALL);
if (fun.getContainingDeclaration() instanceof NamespaceDescriptor) { if (DescriptorUtils.isTopLevelDeclaration(fun)) {
JetPsiChecker.highlightName(holder, callee, JetHighlightingColors.NAMESPACE_FUNCTION_CALL); JetPsiChecker.highlightName(holder, callee, JetHighlightingColors.NAMESPACE_FUNCTION_CALL);
} }
if (fun.getReceiverParameter() != null) { if (fun.getReceiverParameter() != null) {
@@ -25,6 +25,7 @@ import org.jetbrains.jet.lang.psi.JetProperty;
import org.jetbrains.jet.lang.psi.JetSimpleNameExpression; import org.jetbrains.jet.lang.psi.JetSimpleNameExpression;
import org.jetbrains.jet.lang.psi.JetThisExpression; import org.jetbrains.jet.lang.psi.JetThisExpression;
import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
import org.jetbrains.jet.lexer.JetTokens; import org.jetbrains.jet.lexer.JetTokens;
class PropertiesHighlightingVisitor extends AfterAnalysisHighlightingVisitor { class PropertiesHighlightingVisitor extends AfterAnalysisHighlightingVisitor {
@@ -77,7 +78,7 @@ class PropertiesHighlightingVisitor extends AfterAnalysisHighlightingVisitor {
private void highlightProperty(@NotNull PsiElement elementToHighlight, private void highlightProperty(@NotNull PsiElement elementToHighlight,
@NotNull PropertyDescriptor descriptor, @NotNull PropertyDescriptor descriptor,
boolean withBackingField) { boolean withBackingField) {
boolean namespace = descriptor.getContainingDeclaration() instanceof NamespaceDescriptor; boolean namespace = DescriptorUtils.isTopLevelDeclaration(descriptor);
JetPsiChecker.highlightName(holder, elementToHighlight, JetPsiChecker.highlightName(holder, elementToHighlight,
namespace ? JetHighlightingColors.NAMESPACE_PROPERTY : JetHighlightingColors.INSTANCE_PROPERTY namespace ? JetHighlightingColors.NAMESPACE_PROPERTY : JetHighlightingColors.INSTANCE_PROPERTY
); );
@@ -22,6 +22,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor; import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
import org.jetbrains.k2js.translate.context.Namer; import org.jetbrains.k2js.translate.context.Namer;
import org.jetbrains.k2js.translate.context.TranslationContext; import org.jetbrains.k2js.translate.context.TranslationContext;
import org.jetbrains.k2js.translate.general.AbstractTranslator; import org.jetbrains.k2js.translate.general.AbstractTranslator;
@@ -96,7 +97,7 @@ public final class NamespaceDeclarationTranslator extends AbstractTranslator {
private JsObjectLiteral getRootPackage(Map<NamespaceDescriptor, List<JsExpression>> descriptorToDefineInvocation, private JsObjectLiteral getRootPackage(Map<NamespaceDescriptor, List<JsExpression>> descriptorToDefineInvocation,
NamespaceDescriptor descriptor) { NamespaceDescriptor descriptor) {
NamespaceDescriptor rootNamespace = descriptor; NamespaceDescriptor rootNamespace = descriptor;
while (rootNamespace.getContainingDeclaration() instanceof NamespaceDescriptor) { while (DescriptorUtils.isTopLevelDeclaration(rootNamespace)) {
rootNamespace = (NamespaceDescriptor) rootNamespace.getContainingDeclaration(); rootNamespace = (NamespaceDescriptor) rootNamespace.getContainingDeclaration();
} }
@@ -21,9 +21,9 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.descriptors.ClassDescriptor; import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
import org.jetbrains.jet.lang.descriptors.ConstructorDescriptor; import org.jetbrains.jet.lang.descriptors.ConstructorDescriptor;
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor; import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
import org.jetbrains.jet.lang.psi.JetClassOrObject; import org.jetbrains.jet.lang.psi.JetClassOrObject;
import org.jetbrains.jet.lang.psi.JetFunctionLiteralExpression; import org.jetbrains.jet.lang.psi.JetFunctionLiteralExpression;
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
import org.jetbrains.k2js.translate.LabelGenerator; import org.jetbrains.k2js.translate.LabelGenerator;
import org.jetbrains.k2js.translate.context.Namer; import org.jetbrains.k2js.translate.context.Namer;
import org.jetbrains.k2js.translate.context.TraceableThisAliasProvider; import org.jetbrains.k2js.translate.context.TraceableThisAliasProvider;
@@ -71,7 +71,7 @@ public class LiteralFunctionTranslator {
funContext = createThisTraceableContext(classDescriptor, fun, new JsNameRef("o", fun.getName().makeRef())); funContext = createThisTraceableContext(classDescriptor, fun, new JsNameRef("o", fun.getName().makeRef()));
} }
else { else {
asInner = descriptor.getContainingDeclaration() instanceof NamespaceDescriptor; asInner = DescriptorUtils.isTopLevelDeclaration(descriptor);
funContext = rootContext.contextWithScope(fun); funContext = rootContext.contextWithScope(fun);
} }