From 7c88a70c51c2d4660f1a15dfae91cf1f8bfddf43 Mon Sep 17 00:00:00 2001 From: Svetlana Isakova Date: Tue, 3 Jul 2012 13:12:05 +0400 Subject: [PATCH] 'hasUnknownTypeParameters' method added to detect 'DIRTY' status --- .../lang/resolve/calls/ResolvedCallImpl.java | 22 +++++++++++++++++++ .../resolve/calls/ResolvedCallWithTrace.java | 2 ++ .../calls/VariableAsFunctionResolvedCall.java | 5 +++++ 3 files changed, 29 insertions(+) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ResolvedCallImpl.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ResolvedCallImpl.java index f4eb4b6291c..f00c58ffe43 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ResolvedCallImpl.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ResolvedCallImpl.java @@ -17,12 +17,14 @@ package org.jetbrains.jet.lang.resolve.calls; import com.google.common.collect.Maps; +import com.google.common.collect.Sets; import com.intellij.util.Function; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.descriptors.CallableDescriptor; import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor; import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor; import org.jetbrains.jet.lang.resolve.TemporaryBindingTrace; +import org.jetbrains.jet.lang.resolve.calls.inference.TypeBounds; import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor; import org.jetbrains.jet.lang.types.JetType; @@ -64,11 +66,13 @@ public class ResolvedCallImpl implements ResolvedC private final boolean isSafeCall; private final Map typeArguments = Maps.newLinkedHashMap(); + private final Map typeArgumentBounds = Maps.newLinkedHashMap(); private final Map autoCasts = Maps.newHashMap(); private final Map valueArguments = Maps.newLinkedHashMap(); private boolean someArgumentHasNoType = false; private TemporaryBindingTrace trace; private ResolutionStatus status = UNKNOWN_STATUS; + private boolean hasUnknownTypeParameters = false; private ResolvedCallImpl(@NotNull ResolutionCandidate candidate, @NotNull TemporaryBindingTrace trace) { this.candidateDescriptor = candidate.getDescriptor(); @@ -89,6 +93,15 @@ public class ResolvedCallImpl implements ResolvedC this.status = this.status.combine(status); } + @Override + public boolean hasUnknownTypeParameters() { + return hasUnknownTypeParameters; + } + + public void setHasUnknownTypeParameters(boolean hasUnknownTypeParameters) { + this.hasUnknownTypeParameters = hasUnknownTypeParameters; + } + @Override @NotNull public TemporaryBindingTrace getTrace() { @@ -117,6 +130,15 @@ public class ResolvedCallImpl implements ResolvedC typeArguments.put(typeParameter, typeArgument); } + public void recordTypeBounds(@NotNull TypeParameterDescriptor typeParameter, @NotNull TypeBounds typeBounds) { + //assert !typeArgumentBounds.containsKey(typeParameter) : typeParameter; + typeArgumentBounds.put(typeParameter, typeBounds); + } + + public Map getTypeArgumentBounds() { + return typeArgumentBounds; + } + public void recordValueArgument(@NotNull ValueParameterDescriptor valueParameter, @NotNull ResolvedValueArgument valueArgument) { assert !valueArguments.containsKey(valueParameter) : valueParameter + " -> " + valueArgument; valueArguments.put(valueParameter, valueArgument); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ResolvedCallWithTrace.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ResolvedCallWithTrace.java index ae3d5798dbd..b85db2be481 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ResolvedCallWithTrace.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ResolvedCallWithTrace.java @@ -28,6 +28,8 @@ public interface ResolvedCallWithTrace extends Res @NotNull ResolutionStatus getStatus(); + boolean hasUnknownTypeParameters(); + boolean isDirty(); TemporaryBindingTrace getTrace(); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/VariableAsFunctionResolvedCall.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/VariableAsFunctionResolvedCall.java index 4572075a285..f0a3bfba965 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/VariableAsFunctionResolvedCall.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/VariableAsFunctionResolvedCall.java @@ -121,4 +121,9 @@ public class VariableAsFunctionResolvedCall implements ResolvedCallWithTrace