KT-1151 Code completion for not imported extension functions - refactorings:
- Don't touch call resolver - Check only newly imported descriptors - Use Stepa's wrapper for getting boolean attribute from annotation
This commit is contained in:
@@ -30,13 +30,13 @@ import org.jetbrains.jet.lang.psi.JetImportDirective;
|
||||
import org.jetbrains.jet.lang.psi.JetNamespaceHeader;
|
||||
import org.jetbrains.jet.lang.psi.JetSimpleNameExpression;
|
||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||
import org.jetbrains.jet.lang.resolve.calls.CallResolver;
|
||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||
import org.jetbrains.jet.lang.resolve.scopes.JetScopeUtils;
|
||||
import org.jetbrains.jet.lang.resolve.scopes.receivers.ExpressionReceiver;
|
||||
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor;
|
||||
import org.jetbrains.jet.lang.types.JetType;
|
||||
import org.jetbrains.jet.lang.types.NamespaceType;
|
||||
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingUtils;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@@ -138,7 +138,7 @@ public final class TipsManager {
|
||||
return false;
|
||||
}
|
||||
for (ReceiverDescriptor receiverDescriptor : result) {
|
||||
if (CallResolver.checkIsExtensionCallable(receiverDescriptor, callableDescriptor)) {
|
||||
if (ExpressionTypingUtils.checkIsExtensionCallable(receiverDescriptor, callableDescriptor)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -177,51 +177,10 @@ public final class TipsManager {
|
||||
new Predicate<CallableDescriptor>() {
|
||||
@Override
|
||||
public boolean apply(CallableDescriptor callableDescriptor) {
|
||||
return CallResolver.checkIsExtensionCallable(receiverDescriptor, callableDescriptor);
|
||||
return ExpressionTypingUtils.checkIsExtensionCallable(receiverDescriptor, callableDescriptor);
|
||||
}
|
||||
}));
|
||||
|
||||
return descriptorsSet;
|
||||
}
|
||||
|
||||
// /*
|
||||
// * Checks if receiver declaration could be resolved to call expected receiver.
|
||||
// */
|
||||
// private static boolean checkReceiverResolution (
|
||||
// @NotNull ReceiverDescriptor expectedReceiver,
|
||||
// @NotNull CallableDescriptor receiverArgument
|
||||
// ) {
|
||||
// JetType type = expectedReceiver.getType();
|
||||
// if (checkReceiverResolution(expectedReceiver, type, receiverArgument)) return true;
|
||||
// if (type.isNullable()) {
|
||||
// JetType notNullableType = TypeUtils.makeNotNullable(type);
|
||||
// if (checkReceiverResolution(expectedReceiver, notNullableType, receiverArgument)) return true;
|
||||
// }
|
||||
// return false;
|
||||
// }
|
||||
//
|
||||
// private static boolean checkReceiverResolution (
|
||||
// @NotNull ReceiverDescriptor expectedReceiver,
|
||||
// @NotNull JetType receiverType,
|
||||
// @NotNull CallableDescriptor receiverArgument
|
||||
// ) {
|
||||
// ConstraintSystem constraintSystem = new ConstraintSystemImpl(ConstraintResolutionListener.DO_NOTHING);
|
||||
// for (TypeParameterDescriptor typeParameterDescriptor : receiverArgument.getTypeParameters()) {
|
||||
// constraintSystem.registerTypeVariable(typeParameterDescriptor, Variance.INVARIANT);
|
||||
// }
|
||||
//
|
||||
// ReceiverDescriptor receiverParameter = receiverArgument.getReceiverParameter();
|
||||
// if (expectedReceiver.exists() && receiverParameter.exists()) {
|
||||
// constraintSystem.addSubtypingConstraint(
|
||||
// RECEIVER.assertSubtyping(receiverType, receiverParameter.getType()));
|
||||
// }
|
||||
// else if (expectedReceiver.exists() || receiverParameter.exists()) {
|
||||
// // Only one of receivers exist
|
||||
// return false;
|
||||
// }
|
||||
//
|
||||
// ConstraintSystemSolution solution = constraintSystem.solve();
|
||||
// return solution.getStatus().isSuccessful();
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user