Refactoring: move methods about override to OverridingUtil
This commit is contained in:
@@ -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<CallableMemberDescriptor> getDirectlyOverriddenDeclarations(@NotNull CallableMemberDescriptor descriptor) {
|
||||
Set<CallableMemberDescriptor> result = Sets.newHashSet();
|
||||
Set<? extends CallableMemberDescriptor> 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<FunctionDescriptor> getDirectlyOverriddenDeclarations(@NotNull FunctionDescriptor descriptor) {
|
||||
//noinspection unchecked
|
||||
return (Set) getDirectlyOverriddenDeclarations((CallableMemberDescriptor) descriptor);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static Set<PropertyDescriptor> getDirectlyOverriddenDeclarations(@NotNull PropertyDescriptor descriptor) {
|
||||
//noinspection unchecked
|
||||
return (Set) getDirectlyOverriddenDeclarations((CallableMemberDescriptor) descriptor);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static <T extends CallableMemberDescriptor> Set<T> getAllOverriddenDeclarations(@NotNull T memberDescriptor) {
|
||||
Set<T> 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;
|
||||
|
||||
@@ -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<CallableMemberDescriptor> getDirectlyOverriddenDeclarations(@NotNull CallableMemberDescriptor descriptor) {
|
||||
Set<CallableMemberDescriptor> result = Sets.newHashSet();
|
||||
Set<? extends CallableMemberDescriptor> 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<FunctionDescriptor> getDirectlyOverriddenDeclarations(@NotNull FunctionDescriptor descriptor) {
|
||||
//noinspection unchecked
|
||||
return (Set) getDirectlyOverriddenDeclarations((CallableMemberDescriptor) descriptor);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static Set<PropertyDescriptor> getDirectlyOverriddenDeclarations(@NotNull PropertyDescriptor descriptor) {
|
||||
//noinspection unchecked
|
||||
return (Set) getDirectlyOverriddenDeclarations((CallableMemberDescriptor) descriptor);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static <T extends CallableMemberDescriptor> Set<T> getAllOverriddenDeclarations(@NotNull T memberDescriptor) {
|
||||
Set<T> 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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
@@ -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<? extends CallableMemberDescriptor> overriddenMembers = getDirectlyOverriddenDeclarations(
|
||||
Set<? extends CallableMemberDescriptor> overriddenMembers = OverridingUtil.getDirectlyOverriddenDeclarations(
|
||||
(CallableMemberDescriptor) descriptor);
|
||||
if (overriddenMembers.size() == 0) {
|
||||
return null;
|
||||
@@ -290,7 +289,8 @@ public class JetLineMarkerProvider implements LineMarkerProvider {
|
||||
return;
|
||||
}
|
||||
|
||||
Set<CallableMemberDescriptor> overriddenMembers = getDirectlyOverriddenDeclarations((CallableMemberDescriptor) descriptor);
|
||||
Set<CallableMemberDescriptor> overriddenMembers = OverridingUtil
|
||||
.getDirectlyOverriddenDeclarations((CallableMemberDescriptor) descriptor);
|
||||
if (overriddenMembers.size() == 0) {
|
||||
return;
|
||||
}
|
||||
@@ -334,7 +334,8 @@ public class JetLineMarkerProvider implements LineMarkerProvider {
|
||||
return "";
|
||||
}
|
||||
|
||||
Set<CallableMemberDescriptor> overriddenMembers = getDirectlyOverriddenDeclarations((CallableMemberDescriptor) descriptor);
|
||||
Set<CallableMemberDescriptor> overriddenMembers = OverridingUtil
|
||||
.getDirectlyOverriddenDeclarations((CallableMemberDescriptor) descriptor);
|
||||
if (overriddenMembers.size() == 0) {
|
||||
return "";
|
||||
}
|
||||
|
||||
@@ -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<FunctionDescriptor> {
|
||||
val overriddenDeclarations = getAllOverriddenDeclarations(functionDescriptor)
|
||||
val overriddenDeclarations = OverridingUtil.getAllOverriddenDeclarations(functionDescriptor)
|
||||
if (overriddenDeclarations.isEmpty()) {
|
||||
return Collections.singleton(functionDescriptor)
|
||||
}
|
||||
|
||||
@@ -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<CallableMemberDescriptor> overriddenDeclarations =
|
||||
BindingContextUtils.getAllOverriddenDeclarations((CallableMemberDescriptor) declarationDescriptor);
|
||||
OverridingUtil.getAllOverriddenDeclarations((CallableMemberDescriptor) declarationDescriptor);
|
||||
|
||||
descriptors = ContainerUtil.mapNotNull(overriddenDeclarations, new Function<CallableMemberDescriptor, DeclarationDescriptor>() {
|
||||
@Override
|
||||
|
||||
@@ -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<FunctionDescriptor> declarations = BindingContextUtils.getAllOverriddenDeclarations(descriptor);
|
||||
Set<FunctionDescriptor> declarations = OverridingUtil.getAllOverriddenDeclarations(descriptor);
|
||||
for (FunctionDescriptor memberDescriptor : declarations) {
|
||||
if (AnnotationsUtils.isNativeObject(memberDescriptor)) return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user