From 7933f07bdd3926c6978c5cf631b9cf46452be603 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Fri, 28 Mar 2014 13:14:09 +0400 Subject: [PATCH] Avoid rewrites between script body checking and class members --- .../lang/resolve/TemporaryBindingTrace.java | 5 ++- .../descriptors/AbstractLazyMemberScope.java | 12 ++++--- .../lazy/descriptors/LazyClassDescriptor.java | 20 ++++++++---- .../descriptors/LazyClassMemberScope.java | 32 +++++++++---------- .../descriptors/LazyPackageMemberScope.java | 2 +- .../lazy/descriptors/LazyScriptDescriptor.kt | 5 ++- 6 files changed, 45 insertions(+), 31 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TemporaryBindingTrace.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TemporaryBindingTrace.java index 47fdf22e201..913036c45d0 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TemporaryBindingTrace.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TemporaryBindingTrace.java @@ -16,18 +16,17 @@ package org.jetbrains.jet.lang.resolve; -import com.google.common.base.Predicate; -import com.intellij.psi.PsiElement; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.jet.util.slicedmap.WritableSlice; public class TemporaryBindingTrace extends DelegatingBindingTrace { + @NotNull public static TemporaryBindingTrace create(@NotNull BindingTrace trace, String debugName) { return new TemporaryBindingTrace(trace, debugName); } + @NotNull public static TemporaryBindingTrace create(@NotNull BindingTrace trace, String debugName, @Nullable Object resolutionSubjectForMessage) { return create(trace, AnalyzingUtils.formDebugNameForBindingTrace(debugName, resolutionSubjectForMessage)); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/AbstractLazyMemberScope.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/AbstractLazyMemberScope.java index ff40fc6fab1..4808ee70c34 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/AbstractLazyMemberScope.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/AbstractLazyMemberScope.java @@ -25,6 +25,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.psi.*; +import org.jetbrains.jet.lang.resolve.BindingTrace; import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowInfo; import org.jetbrains.jet.lang.resolve.lazy.ResolveSession; import org.jetbrains.jet.lang.resolve.lazy.data.JetClassInfoUtil; @@ -43,6 +44,7 @@ import static org.jetbrains.jet.lang.resolve.lazy.ResolveSessionUtils.safeNameFo public abstract class AbstractLazyMemberScope implements JetScope { protected final ResolveSession resolveSession; + protected final BindingTrace trace; protected final DP declarationProvider; protected final D thisDescriptor; @@ -57,9 +59,11 @@ public abstract class AbstractLazyMemberScope() { @Override public ConstructorDescriptor invoke() { @@ -120,7 +121,6 @@ public class LazyClassMemberScope extends AbstractLazyMemberScope functions = super.getFunctions(name); for (FunctionDescriptor functionDescriptor : functions) { if (functionDescriptor.getKind() != FAKE_OVERRIDE && functionDescriptor.getKind() != DELEGATION) { - OverrideResolver.resolveUnknownVisibilityForMember(functionDescriptor, resolveSession.getTrace()); + OverrideResolver.resolveUnknownVisibilityForMember(functionDescriptor, trace); } } return functions; @@ -176,7 +176,7 @@ public class LazyClassMemberScope extends AbstractLazyMemberScope() { @Override public JetType invoke() { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyPackageMemberScope.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyPackageMemberScope.java index c3788aa3432..d72d4acce3b 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyPackageMemberScope.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyPackageMemberScope.java @@ -36,7 +36,7 @@ public class LazyPackageMemberScope extends AbstractLazyMemberScope