From b7791418450253fb0080310ac003936b3709aad1 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Fri, 28 Mar 2014 15:20:58 +0400 Subject: [PATCH] Refactoring: move methods about override to OverridingUtil --- .../jet/lang/resolve/BindingContextUtils.java | 61 +------------------ .../jet/lang/resolve/OverridingUtil.java | 58 +++++++++++++++++- .../codeInsight/GotoSuperActionHandler.java | 7 +-- .../highlighter/JetLineMarkerProvider.java | 13 ++-- .../changeSignature/JetChangeSignature.kt | 7 +-- .../translate/utils/AnnotationsUtils.java | 6 +- .../translate/utils/TranslationUtils.java | 6 +- 7 files changed, 79 insertions(+), 79 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContextUtils.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContextUtils.java index 6ffca0a2abb..b982bd5197d 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContextUtils.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContextUtils.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2013 JetBrains s.r.o. + * Copyright 2010-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,7 +17,6 @@ package org.jetbrains.jet.lang.resolve; import com.google.common.collect.Lists; -import com.google.common.collect.Sets; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; @@ -37,7 +36,8 @@ import org.jetbrains.jet.util.slicedmap.Slices; import java.util.*; -import static org.jetbrains.jet.lang.descriptors.CallableMemberDescriptor.Kind.*; +import static org.jetbrains.jet.lang.descriptors.CallableMemberDescriptor.Kind.DECLARATION; +import static org.jetbrains.jet.lang.descriptors.CallableMemberDescriptor.Kind.SYNTHESIZED; import static org.jetbrains.jet.lang.diagnostics.Errors.AMBIGUOUS_LABEL; import static org.jetbrains.jet.lang.resolve.BindingContext.*; @@ -308,61 +308,6 @@ public class BindingContextUtils { return false; } - @NotNull - public static Set getDirectlyOverriddenDeclarations(@NotNull CallableMemberDescriptor descriptor) { - Set result = Sets.newHashSet(); - Set overriddenDescriptors = descriptor.getOverriddenDescriptors(); - for (CallableMemberDescriptor overriddenDescriptor : overriddenDescriptors) { - CallableMemberDescriptor.Kind kind = overriddenDescriptor.getKind(); - if (kind == DECLARATION) { - result.add(overriddenDescriptor); - } - else if (kind == FAKE_OVERRIDE || kind == DELEGATION) { - result.addAll(getDirectlyOverriddenDeclarations(overriddenDescriptor)); - } - else if (kind == SYNTHESIZED) { - //do nothing - } - else { - throw new AssertionError("Unexpected callable kind " + kind); - } - } - return OverridingUtil.filterOutOverridden(result); - } - - @NotNull - public static Set getDirectlyOverriddenDeclarations(@NotNull FunctionDescriptor descriptor) { - //noinspection unchecked - return (Set) getDirectlyOverriddenDeclarations((CallableMemberDescriptor) descriptor); - } - - @NotNull - public static Set getDirectlyOverriddenDeclarations(@NotNull PropertyDescriptor descriptor) { - //noinspection unchecked - return (Set) getDirectlyOverriddenDeclarations((CallableMemberDescriptor) descriptor); - } - - @NotNull - public static Set getAllOverriddenDeclarations(@NotNull T memberDescriptor) { - Set result = Sets.newHashSet(); - for (CallableMemberDescriptor overriddenDeclaration : memberDescriptor.getOverriddenDescriptors()) { - CallableMemberDescriptor.Kind kind = overriddenDeclaration.getKind(); - if (kind == DECLARATION) { - //noinspection unchecked - result.add((T) overriddenDeclaration); - } - else if (kind == DELEGATION || kind == FAKE_OVERRIDE || kind == SYNTHESIZED) { - //do nothing - } - else { - throw new AssertionError("Unexpected callable kind " + kind); - } - //noinspection unchecked - result.addAll(getAllOverriddenDeclarations((T) overriddenDeclaration)); - } - return result; - } - public static boolean isVarCapturedInClosure(BindingContext bindingContext, DeclarationDescriptor descriptor) { if (!(descriptor instanceof VariableDescriptor) || descriptor instanceof PropertyDescriptor) return false; VariableDescriptor variableDescriptor = (VariableDescriptor) descriptor; diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/OverridingUtil.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/OverridingUtil.java index 66110ae9702..aab5441bb5d 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/OverridingUtil.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/OverridingUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2013 JetBrains s.r.o. + * Copyright 2010-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -32,6 +32,7 @@ import org.jetbrains.jet.lang.types.checker.JetTypeChecker; import java.util.*; +import static org.jetbrains.jet.lang.descriptors.CallableMemberDescriptor.Kind.*; import static org.jetbrains.jet.lang.resolve.OverridingUtil.OverrideCompatibilityInfo.Result.CONFLICT; import static org.jetbrains.jet.lang.resolve.OverridingUtil.OverrideCompatibilityInfo.Result.OVERRIDABLE; @@ -692,4 +693,59 @@ public class OverridingUtil { return message; } } + + @NotNull + public static Set getDirectlyOverriddenDeclarations(@NotNull CallableMemberDescriptor descriptor) { + Set result = Sets.newHashSet(); + Set overriddenDescriptors = descriptor.getOverriddenDescriptors(); + for (CallableMemberDescriptor overriddenDescriptor : overriddenDescriptors) { + CallableMemberDescriptor.Kind kind = overriddenDescriptor.getKind(); + if (kind == DECLARATION) { + result.add(overriddenDescriptor); + } + else if (kind == FAKE_OVERRIDE || kind == DELEGATION) { + result.addAll(getDirectlyOverriddenDeclarations(overriddenDescriptor)); + } + else if (kind == SYNTHESIZED) { + //do nothing + } + else { + throw new AssertionError("Unexpected callable kind " + kind); + } + } + return filterOutOverridden(result); + } + + @NotNull + public static Set getDirectlyOverriddenDeclarations(@NotNull FunctionDescriptor descriptor) { + //noinspection unchecked + return (Set) getDirectlyOverriddenDeclarations((CallableMemberDescriptor) descriptor); + } + + @NotNull + public static Set getDirectlyOverriddenDeclarations(@NotNull PropertyDescriptor descriptor) { + //noinspection unchecked + return (Set) getDirectlyOverriddenDeclarations((CallableMemberDescriptor) descriptor); + } + + @NotNull + public static Set getAllOverriddenDeclarations(@NotNull T memberDescriptor) { + Set result = Sets.newHashSet(); + for (CallableMemberDescriptor overriddenDeclaration : memberDescriptor.getOverriddenDescriptors()) { + CallableMemberDescriptor.Kind kind = overriddenDeclaration.getKind(); + if (kind == DECLARATION) { + //noinspection unchecked + result.add((T) overriddenDeclaration); + } + else if (kind == DELEGATION || kind == FAKE_OVERRIDE || kind == SYNTHESIZED) { + //do nothing + } + else { + throw new AssertionError("Unexpected callable kind " + kind); + } + //noinspection unchecked + result.addAll(getAllOverriddenDeclarations((T) overriddenDeclaration)); + } + return result; + } } diff --git a/idea/src/org/jetbrains/jet/plugin/codeInsight/GotoSuperActionHandler.java b/idea/src/org/jetbrains/jet/plugin/codeInsight/GotoSuperActionHandler.java index 7bc5553dcb2..c18d7f3b80c 100644 --- a/idea/src/org/jetbrains/jet/plugin/codeInsight/GotoSuperActionHandler.java +++ b/idea/src/org/jetbrains/jet/plugin/codeInsight/GotoSuperActionHandler.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2013 JetBrains s.r.o. + * Copyright 2010-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -36,6 +36,7 @@ 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.BindingContextUtils; +import org.jetbrains.jet.lang.resolve.OverridingUtil; import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.plugin.JetBundle; @@ -44,8 +45,6 @@ import org.jetbrains.jet.plugin.project.AnalyzerFacadeWithCache; import java.util.Collection; import java.util.List; -import static org.jetbrains.jet.lang.resolve.BindingContextUtils.getDirectlyOverriddenDeclarations; - public class GotoSuperActionHandler implements CodeInsightActionHandler { @Override public void invoke(@NotNull Project project, @NotNull Editor editor, @NotNull PsiFile file) { @@ -84,7 +83,7 @@ public class GotoSuperActionHandler implements CodeInsightActionHandler { message = JetBundle.message("goto.super.class.chooser.title"); } else if (descriptor instanceof CallableMemberDescriptor) { - superDescriptors = getDirectlyOverriddenDeclarations((CallableMemberDescriptor) descriptor); + superDescriptors = OverridingUtil.getDirectlyOverriddenDeclarations((CallableMemberDescriptor) descriptor); if (descriptor instanceof PropertyDescriptor) { message = JetBundle.message("goto.super.property.chooser.title"); } diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/JetLineMarkerProvider.java b/idea/src/org/jetbrains/jet/plugin/highlighter/JetLineMarkerProvider.java index 6960ffac9b0..8e4ce03a10c 100644 --- a/idea/src/org/jetbrains/jet/plugin/highlighter/JetLineMarkerProvider.java +++ b/idea/src/org/jetbrains/jet/plugin/highlighter/JetLineMarkerProvider.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2013 JetBrains s.r.o. + * Copyright 2010-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -58,6 +58,7 @@ import org.jetbrains.jet.lang.descriptors.Modality; import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.BindingContextUtils; +import org.jetbrains.jet.lang.resolve.OverridingUtil; import org.jetbrains.jet.lexer.JetTokens; import org.jetbrains.jet.plugin.JetBundle; import org.jetbrains.jet.plugin.JetPluginUtil; @@ -70,8 +71,6 @@ import javax.swing.*; import java.awt.event.MouseEvent; import java.util.*; -import static org.jetbrains.jet.lang.resolve.BindingContextUtils.getDirectlyOverriddenDeclarations; - public class JetLineMarkerProvider implements LineMarkerProvider { public static final Icon OVERRIDING_MARK = AllIcons.Gutter.OverridingMethod; public static final Icon IMPLEMENTING_MARK = AllIcons.Gutter.ImplementingMethod; @@ -247,7 +246,7 @@ public class JetLineMarkerProvider implements LineMarkerProvider { return null; } - Set overriddenMembers = getDirectlyOverriddenDeclarations( + Set overriddenMembers = OverridingUtil.getDirectlyOverriddenDeclarations( (CallableMemberDescriptor) descriptor); if (overriddenMembers.size() == 0) { return null; @@ -290,7 +289,8 @@ public class JetLineMarkerProvider implements LineMarkerProvider { return; } - Set overriddenMembers = getDirectlyOverriddenDeclarations((CallableMemberDescriptor) descriptor); + Set overriddenMembers = OverridingUtil + .getDirectlyOverriddenDeclarations((CallableMemberDescriptor) descriptor); if (overriddenMembers.size() == 0) { return; } @@ -334,7 +334,8 @@ public class JetLineMarkerProvider implements LineMarkerProvider { return ""; } - Set overriddenMembers = getDirectlyOverriddenDeclarations((CallableMemberDescriptor) descriptor); + Set overriddenMembers = OverridingUtil + .getDirectlyOverriddenDeclarations((CallableMemberDescriptor) descriptor); if (overriddenMembers.size() == 0) { return ""; } diff --git a/idea/src/org/jetbrains/jet/plugin/refactoring/changeSignature/JetChangeSignature.kt b/idea/src/org/jetbrains/jet/plugin/refactoring/changeSignature/JetChangeSignature.kt index b3670093b51..c6eddae7818 100644 --- a/idea/src/org/jetbrains/jet/plugin/refactoring/changeSignature/JetChangeSignature.kt +++ b/idea/src/org/jetbrains/jet/plugin/refactoring/changeSignature/JetChangeSignature.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2013 JetBrains s.r.o. + * Copyright 2010-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -30,7 +30,6 @@ import org.jetbrains.jet.plugin.JetBundle import org.jetbrains.jet.renderer.DescriptorRenderer import java.util.* import org.jetbrains.jet.lang.descriptors.CallableMemberDescriptor.Kind.* -import org.jetbrains.jet.lang.resolve.BindingContextUtils.* import org.jetbrains.annotations.TestOnly import org.jetbrains.jet.plugin.codeInsight.DescriptorToDeclarationUtil import org.jetbrains.jet.plugin.quickfix.QuickFixUtil @@ -105,7 +104,7 @@ public class JetChangeSignature(val project: Project, Collections.singleton(functionDescriptor) } DELEGATION, FAKE_OVERRIDE -> { - getDirectlyOverriddenDeclarations(functionDescriptor) + OverridingUtil.getDirectlyOverriddenDeclarations(functionDescriptor) } else -> { throw IllegalStateException("Unexpected callable kind: ${functionDescriptor.getKind()}") @@ -114,7 +113,7 @@ public class JetChangeSignature(val project: Project, } fun getDeepestSuperDeclarations(): Set { - val overriddenDeclarations = getAllOverriddenDeclarations(functionDescriptor) + val overriddenDeclarations = OverridingUtil.getAllOverriddenDeclarations(functionDescriptor) if (overriddenDeclarations.isEmpty()) { return Collections.singleton(functionDescriptor) } diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/utils/AnnotationsUtils.java b/js/js.translator/src/org/jetbrains/k2js/translate/utils/AnnotationsUtils.java index 0299d6c5568..d87f8de74d9 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/utils/AnnotationsUtils.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/utils/AnnotationsUtils.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2013 JetBrains s.r.o. + * Copyright 2010-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,7 +24,7 @@ import org.jetbrains.jet.lang.descriptors.CallableMemberDescriptor; import org.jetbrains.jet.lang.descriptors.ClassDescriptor; import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor; -import org.jetbrains.jet.lang.resolve.BindingContextUtils; +import org.jetbrains.jet.lang.resolve.OverridingUtil; import org.jetbrains.jet.lang.resolve.constants.CompileTimeConstant; import org.jetbrains.jet.lang.resolve.name.FqName; @@ -80,7 +80,7 @@ public final class AnnotationsUtils { isOverride((CallableMemberDescriptor) declarationDescriptor)) { Set overriddenDeclarations = - BindingContextUtils.getAllOverriddenDeclarations((CallableMemberDescriptor) declarationDescriptor); + OverridingUtil.getAllOverriddenDeclarations((CallableMemberDescriptor) declarationDescriptor); descriptors = ContainerUtil.mapNotNull(overriddenDeclarations, new Function() { @Override diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java b/js/js.translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java index 8d31da739bb..6555a752d0c 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2013 JetBrains s.r.o. + * Copyright 2010-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,7 +26,7 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.descriptors.impl.AnonymousFunctionDescriptor; import org.jetbrains.jet.lang.psi.*; -import org.jetbrains.jet.lang.resolve.BindingContextUtils; +import org.jetbrains.jet.lang.resolve.OverridingUtil; import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.k2js.translate.context.TemporaryConstVariable; @@ -465,7 +465,7 @@ public final class TranslationUtils { private static boolean isNativeOrOverrideNative(FunctionDescriptor descriptor) { if (AnnotationsUtils.isNativeObject(descriptor)) return true; - Set declarations = BindingContextUtils.getAllOverriddenDeclarations(descriptor); + Set declarations = OverridingUtil.getAllOverriddenDeclarations(descriptor); for (FunctionDescriptor memberDescriptor : declarations) { if (AnnotationsUtils.isNativeObject(memberDescriptor)) return true; }