From aa39519323b0521945d18fd3b27cdd2b76d6de45 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Thu, 17 Jan 2013 11:51:45 +0400 Subject: [PATCH] Using isTopLevelDeclaration instaed of a direct instanceof check --- .../backend/src/org/jetbrains/jet/codegen/AsmUtil.java | 3 ++- .../jet/codegen/binding/CodegenAnnotatingVisitor.java | 5 +++-- .../org/jetbrains/jet/lang/resolve/DescriptorUtils.java | 7 +------ .../org/jetbrains/jet/renderer/DescriptorRendererImpl.java | 2 +- .../plugin/highlighter/FunctionsHighlightingVisitor.java | 3 ++- .../plugin/highlighter/PropertiesHighlightingVisitor.java | 3 ++- .../declaration/NamespaceDeclarationTranslator.java | 3 ++- .../translate/expression/LiteralFunctionTranslator.java | 4 ++-- 8 files changed, 15 insertions(+), 15 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/AsmUtil.java b/compiler/backend/src/org/jetbrains/jet/codegen/AsmUtil.java index 44aa64ede02..2d860a708da 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/AsmUtil.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/AsmUtil.java @@ -31,6 +31,7 @@ import org.jetbrains.jet.codegen.state.GenerationState; import org.jetbrains.jet.codegen.state.JetTypeMapper; import org.jetbrains.jet.lang.descriptors.*; 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.java.AsmTypeConstants; 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 */ public static int getVisibilityAccessFlagForClass(ClassDescriptor descriptor) { - if (descriptor.getContainingDeclaration() instanceof NamespaceDescriptor || + if (DescriptorUtils.isTopLevelDeclaration(descriptor) || descriptor.getVisibility() == Visibilities.PUBLIC || descriptor.getVisibility() == Visibilities.INTERNAL) { return ACC_PUBLIC; diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/binding/CodegenAnnotatingVisitor.java b/compiler/backend/src/org/jetbrains/jet/codegen/binding/CodegenAnnotatingVisitor.java index 7a7b5a6d4e1..3b208208e2a 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/binding/CodegenAnnotatingVisitor.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/binding/CodegenAnnotatingVisitor.java @@ -22,6 +22,7 @@ import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor; import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.resolve.BindingContext; 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.JvmClassName; import org.jetbrains.jet.lang.resolve.java.PackageClassUtils; @@ -196,8 +197,8 @@ class CodegenAnnotatingVisitor extends JetVisitorVoid { private String getName(ClassDescriptor classDescriptor) { String base = peekFromStack(nameStack); - return classDescriptor.getContainingDeclaration() instanceof NamespaceDescriptor ? base.isEmpty() ? classDescriptor.getName() - .getName() : base + '/' + classDescriptor.getName() : base + '$' + classDescriptor.getName(); + return DescriptorUtils.isTopLevelDeclaration(classDescriptor) ? base.isEmpty() ? classDescriptor.getName() + .getName() : base + '/' + classDescriptor.getName() : base + '$' + classDescriptor.getName(); } @Override diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java index f7320f3c81a..4974f23a149 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java @@ -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) { return namespaceDescriptor.getContainingDeclaration() instanceof ModuleDescriptor; } @@ -400,7 +395,7 @@ public class DescriptorUtils { public static boolean isExternallyAccessible(PropertyDescriptor propertyDescriptor) { return propertyDescriptor.getVisibility() != Visibilities.PRIVATE || isClassObject(propertyDescriptor.getContainingDeclaration()) - || propertyDescriptor.getContainingDeclaration() instanceof NamespaceDescriptor; + || isTopLevelDeclaration(propertyDescriptor); } @NotNull diff --git a/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java b/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java index cded1a64f01..bfdaaecca65 100644 --- a/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java +++ b/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java @@ -333,7 +333,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer { } 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); } } diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/FunctionsHighlightingVisitor.java b/idea/src/org/jetbrains/jet/plugin/highlighter/FunctionsHighlightingVisitor.java index 7cef1d665a1..c7a6f399242 100644 --- a/idea/src/org/jetbrains/jet/plugin/highlighter/FunctionsHighlightingVisitor.java +++ b/idea/src/org/jetbrains/jet/plugin/highlighter/FunctionsHighlightingVisitor.java @@ -21,6 +21,7 @@ import com.intellij.psi.PsiElement; import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.resolve.BindingContext; +import org.jetbrains.jet.lang.resolve.DescriptorUtils; public class FunctionsHighlightingVisitor extends AfterAnalysisHighlightingVisitor { public FunctionsHighlightingVisitor(AnnotationHolder holder, BindingContext bindingContext) { @@ -65,7 +66,7 @@ public class FunctionsHighlightingVisitor extends AfterAnalysisHighlightingVisit else if (calleeDescriptor instanceof FunctionDescriptor) { FunctionDescriptor fun = (FunctionDescriptor)calleeDescriptor; JetPsiChecker.highlightName(holder, callee, JetHighlightingColors.FUNCTION_CALL); - if (fun.getContainingDeclaration() instanceof NamespaceDescriptor) { + if (DescriptorUtils.isTopLevelDeclaration(fun)) { JetPsiChecker.highlightName(holder, callee, JetHighlightingColors.NAMESPACE_FUNCTION_CALL); } if (fun.getReceiverParameter() != null) { diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/PropertiesHighlightingVisitor.java b/idea/src/org/jetbrains/jet/plugin/highlighter/PropertiesHighlightingVisitor.java index 94c8adf49b1..e75afc1fc82 100644 --- a/idea/src/org/jetbrains/jet/plugin/highlighter/PropertiesHighlightingVisitor.java +++ b/idea/src/org/jetbrains/jet/plugin/highlighter/PropertiesHighlightingVisitor.java @@ -25,6 +25,7 @@ import org.jetbrains.jet.lang.psi.JetProperty; import org.jetbrains.jet.lang.psi.JetSimpleNameExpression; import org.jetbrains.jet.lang.psi.JetThisExpression; import org.jetbrains.jet.lang.resolve.BindingContext; +import org.jetbrains.jet.lang.resolve.DescriptorUtils; import org.jetbrains.jet.lexer.JetTokens; class PropertiesHighlightingVisitor extends AfterAnalysisHighlightingVisitor { @@ -77,7 +78,7 @@ class PropertiesHighlightingVisitor extends AfterAnalysisHighlightingVisitor { private void highlightProperty(@NotNull PsiElement elementToHighlight, @NotNull PropertyDescriptor descriptor, boolean withBackingField) { - boolean namespace = descriptor.getContainingDeclaration() instanceof NamespaceDescriptor; + boolean namespace = DescriptorUtils.isTopLevelDeclaration(descriptor); JetPsiChecker.highlightName(holder, elementToHighlight, namespace ? JetHighlightingColors.NAMESPACE_PROPERTY : JetHighlightingColors.INSTANCE_PROPERTY ); diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/declaration/NamespaceDeclarationTranslator.java b/js/js.translator/src/org/jetbrains/k2js/translate/declaration/NamespaceDeclarationTranslator.java index 040b04e846f..ac42c7711ac 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/declaration/NamespaceDeclarationTranslator.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/declaration/NamespaceDeclarationTranslator.java @@ -22,6 +22,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor; import org.jetbrains.jet.lang.psi.JetFile; 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.TranslationContext; import org.jetbrains.k2js.translate.general.AbstractTranslator; @@ -96,7 +97,7 @@ public final class NamespaceDeclarationTranslator extends AbstractTranslator { private JsObjectLiteral getRootPackage(Map> descriptorToDefineInvocation, NamespaceDescriptor descriptor) { NamespaceDescriptor rootNamespace = descriptor; - while (rootNamespace.getContainingDeclaration() instanceof NamespaceDescriptor) { + while (DescriptorUtils.isTopLevelDeclaration(rootNamespace)) { rootNamespace = (NamespaceDescriptor) rootNamespace.getContainingDeclaration(); } diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/expression/LiteralFunctionTranslator.java b/js/js.translator/src/org/jetbrains/k2js/translate/expression/LiteralFunctionTranslator.java index 3060263cf8c..975e43559db 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/expression/LiteralFunctionTranslator.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/expression/LiteralFunctionTranslator.java @@ -21,9 +21,9 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.descriptors.ClassDescriptor; import org.jetbrains.jet.lang.descriptors.ConstructorDescriptor; 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.JetFunctionLiteralExpression; +import org.jetbrains.jet.lang.resolve.DescriptorUtils; import org.jetbrains.k2js.translate.LabelGenerator; import org.jetbrains.k2js.translate.context.Namer; import org.jetbrains.k2js.translate.context.TraceableThisAliasProvider; @@ -71,7 +71,7 @@ public class LiteralFunctionTranslator { funContext = createThisTraceableContext(classDescriptor, fun, new JsNameRef("o", fun.getName().makeRef())); } else { - asInner = descriptor.getContainingDeclaration() instanceof NamespaceDescriptor; + asInner = DescriptorUtils.isTopLevelDeclaration(descriptor); funContext = rootContext.contextWithScope(fun); }