Labeled this & super to nested class' outer is an error

#KT-1174 In Progress
This commit is contained in:
Alexander Udalov
2012-12-03 17:42:40 +04:00
parent 5d92453532
commit 43c37398af
17 changed files with 84 additions and 17 deletions
@@ -24,6 +24,7 @@ import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.BindingContextUtils;
import org.jetbrains.jet.lang.resolve.DescriptorResolver;
import org.jetbrains.jet.lang.resolve.name.LabelName;
import java.util.Collection;
@@ -151,6 +152,13 @@ public class LabelResolver {
context.trace.record(LABEL_TARGET, targetLabel, element);
context.trace.record(REFERENCE_TARGET, thisReference, declarationDescriptor);
if (declarationDescriptor instanceof ClassDescriptor) {
ClassDescriptor classDescriptor = (ClassDescriptor) declarationDescriptor;
if (!DescriptorResolver.checkHasOuterClassInstance(context.scope, context.trace, targetLabel, classDescriptor)) {
return LabeledReceiverResolutionResult.labelResolutionFailed();
}
}
return LabeledReceiverResolutionResult.labelResolutionSuccess(thisReceiver);
}
else if (size == 0) {