diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolverUtil.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolverUtil.java index 9c9c4afe9e5..933d73bfda6 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolverUtil.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolverUtil.java @@ -53,7 +53,7 @@ public class CallResolverUtil { call.isSafeCall()); TemporaryBindingTrace trace = TemporaryBindingTrace.create(context.trace, call.getTrace().toString() + "(copy)"); - ResolvedCallImpl copy = ResolvedCallImpl.create(candidate, trace); + ResolvedCallImpl copy = ResolvedCallImpl.create(candidate, trace, call.getTracing()); call.getTrace().addAllMyDataTo(trace); trace.record(BindingContext.RESOLVED_CALL, context.call.getCalleeExpression(), copy); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallTransformer.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallTransformer.java index 2ca8432fe40..03f913afac4 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallTransformer.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallTransformer.java @@ -68,7 +68,7 @@ public class CallTransformer { @NotNull ResolutionTask task, @NotNull TemporaryBindingTrace candidateTrace) { - ResolvedCallImpl candidateCall = ResolvedCallImpl.create(candidate, candidateTrace); + ResolvedCallImpl candidateCall = ResolvedCallImpl.create(candidate, candidateTrace, task.tracing); return Collections.singleton(CallCandidateResolutionContext.create(candidateCall, task, candidateTrace, task.tracing)); } @@ -103,7 +103,7 @@ public class CallTransformer { Call variableCall = stripCallArguments(task); if (!hasReceiver) { CallCandidateResolutionContext context = CallCandidateResolutionContext.create( - ResolvedCallImpl.create(candidate, candidateTrace), task, candidateTrace, task.tracing, variableCall); + ResolvedCallImpl.create(candidate, candidateTrace, task.tracing), task, candidateTrace, task.tracing, variableCall); return Collections.singleton(context); } Call variableCallWithoutReceiver = stripReceiver(variableCall); @@ -125,7 +125,7 @@ public class CallTransformer { Call call, TemporaryBindingTrace temporaryTrace, ResolutionTask task) { ChainedTemporaryBindingTrace chainedTrace = ChainedTemporaryBindingTrace.create(temporaryTrace, "chained trace to resolve candidate", candidate); - ResolvedCallImpl resolvedCall = ResolvedCallImpl.create(candidate, chainedTrace); + ResolvedCallImpl resolvedCall = ResolvedCallImpl.create(candidate, chainedTrace, task.tracing); return CallCandidateResolutionContext.create(resolvedCall, task, chainedTrace, task.tracing, call); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/model/ResolvedCallImpl.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/model/ResolvedCallImpl.java index e1660fc46b6..688c6589b48 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/model/ResolvedCallImpl.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/model/ResolvedCallImpl.java @@ -29,6 +29,7 @@ import org.jetbrains.jet.lang.resolve.calls.tasks.ExplicitReceiverKind; import org.jetbrains.jet.lang.resolve.calls.tasks.ResolutionCandidate; import org.jetbrains.jet.lang.resolve.calls.results.ResolutionStatus; import org.jetbrains.jet.lang.resolve.calls.inference.ConstraintSystem; +import org.jetbrains.jet.lang.resolve.calls.tasks.TracingStrategy; import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverValue; import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.lang.types.TypeSubstitutor; @@ -56,8 +57,9 @@ public class ResolvedCallImpl implements ResolvedC }; @NotNull - public static ResolvedCallImpl create(@NotNull ResolutionCandidate candidate, @NotNull DelegatingBindingTrace trace) { - return new ResolvedCallImpl(candidate, trace); + public static ResolvedCallImpl create(@NotNull ResolutionCandidate candidate, @NotNull DelegatingBindingTrace trace, + @NotNull TracingStrategy tracing) { + return new ResolvedCallImpl(candidate, trace, tracing); } private final D candidateDescriptor; @@ -71,18 +73,20 @@ public class ResolvedCallImpl implements ResolvedC private final Map valueArguments = Maps.newLinkedHashMap(); private boolean someArgumentHasNoType = false; private final DelegatingBindingTrace trace; + private final TracingStrategy tracing; private ResolutionStatus status = UNKNOWN_STATUS; private boolean hasUnknownTypeParameters = false; private ConstraintSystem constraintSystem = null; private DataFlowInfo dataFlowInfo; - private ResolvedCallImpl(@NotNull ResolutionCandidate candidate, @NotNull DelegatingBindingTrace trace) { + private ResolvedCallImpl(@NotNull ResolutionCandidate candidate, @NotNull DelegatingBindingTrace trace, @NotNull TracingStrategy tracing) { this.candidateDescriptor = candidate.getDescriptor(); this.thisObject = candidate.getThisObject(); this.receiverArgument = candidate.getReceiverArgument(); this.explicitReceiverKind = candidate.getExplicitReceiverKind(); this.isSafeCall = candidate.isSafeCall(); this.trace = trace; + this.tracing = tracing; } @Override @@ -110,6 +114,11 @@ public class ResolvedCallImpl implements ResolvedC return trace; } + @NotNull + public TracingStrategy getTracing() { + return tracing; + } + @Override @NotNull public D getCandidateDescriptor() { diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/reference/CallBuilder.java b/js/js.translator/src/org/jetbrains/k2js/translate/reference/CallBuilder.java index 583ed4706ca..98267bb48be 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/reference/CallBuilder.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/reference/CallBuilder.java @@ -28,6 +28,7 @@ import org.jetbrains.jet.lang.resolve.calls.tasks.ExplicitReceiverKind; import org.jetbrains.jet.lang.resolve.calls.tasks.ResolutionCandidate; import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall; import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCallImpl; +import org.jetbrains.jet.lang.resolve.calls.tasks.TracingStrategy; import org.jetbrains.k2js.translate.context.TranslationContext; import java.util.Arrays; @@ -108,7 +109,8 @@ public final class CallBuilder { resolvedCall = ResolvedCallImpl.create(ResolutionCandidate.create(descriptor, DescriptorUtils.safeGetValue(descriptor.getExpectedThisObject()), DescriptorUtils.safeGetValue(descriptor.getReceiverParameter()), ExplicitReceiverKind.THIS_OBJECT, false), - TemporaryBindingTrace.create(new BindingTraceContext(), "trace to resolve call (in js)")); + TemporaryBindingTrace.create(new BindingTraceContext(), "trace to resolve call (in js)"), + TracingStrategy.EMPTY); } if (descriptor == null) { descriptor = resolvedCall.getCandidateDescriptor().getOriginal();