From 84217393f680b5a836001ba9b68f671be0b98da2 Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Wed, 25 Jul 2012 13:34:21 +0400 Subject: [PATCH] KT-304: Resolve supertype reference to class anyway. #KT-304 Fixed --- .../jetbrains/jet/lang/resolve/calls/ResolutionTask.java | 6 +++++- compiler/testData/resolve/kt304.jet | 5 +++++ 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 compiler/testData/resolve/kt304.jet 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() { +}