diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ResolutionTask.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ResolutionTask.java index 7804c280e0b..3565a18a2ac 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ResolutionTask.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ResolutionTask.java @@ -33,6 +33,7 @@ import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.resolve.scopes.receivers.ExpressionReceiver; import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor; +import org.jetbrains.jet.lang.types.ErrorUtils; import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.lang.types.expressions.OperatorConventions; import org.jetbrains.jet.lexer.JetToken; @@ -105,7 +106,10 @@ public class ResolutionTask extends R if (resolvedCall instanceof VariableAsFunctionResolvedCall) { descriptor = ((VariableAsFunctionResolvedCall) resolvedCall).getVariableCall().getResultingDescriptor(); } - trace.record(REFERENCE_TARGET, reference, descriptor); + DeclarationDescriptor storedReference = trace.get(REFERENCE_TARGET, reference); + if (storedReference == null || !ErrorUtils.isError(descriptor)) { + trace.record(REFERENCE_TARGET, reference, descriptor); + } } @Override diff --git a/compiler/testData/resolve/kt304.jet b/compiler/testData/resolve/kt304.jet new file mode 100644 index 00000000000..3497531e31f --- /dev/null +++ b/compiler/testData/resolve/kt304.jet @@ -0,0 +1,5 @@ +open class Foo() : `Bar`Bar() { +} + +~Bar~open class Bar() { +}