Avoid rewrites between script body checking and class members
This commit is contained in:
@@ -16,18 +16,17 @@
|
|||||||
|
|
||||||
package org.jetbrains.jet.lang.resolve;
|
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.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.util.slicedmap.WritableSlice;
|
|
||||||
|
|
||||||
public class TemporaryBindingTrace extends DelegatingBindingTrace {
|
public class TemporaryBindingTrace extends DelegatingBindingTrace {
|
||||||
|
|
||||||
|
@NotNull
|
||||||
public static TemporaryBindingTrace create(@NotNull BindingTrace trace, String debugName) {
|
public static TemporaryBindingTrace create(@NotNull BindingTrace trace, String debugName) {
|
||||||
return new TemporaryBindingTrace(trace, debugName);
|
return new TemporaryBindingTrace(trace, debugName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
public static TemporaryBindingTrace create(@NotNull BindingTrace trace, String debugName, @Nullable Object resolutionSubjectForMessage) {
|
public static TemporaryBindingTrace create(@NotNull BindingTrace trace, String debugName, @Nullable Object resolutionSubjectForMessage) {
|
||||||
return create(trace, AnalyzingUtils.formDebugNameForBindingTrace(debugName, resolutionSubjectForMessage));
|
return create(trace, AnalyzingUtils.formDebugNameForBindingTrace(debugName, resolutionSubjectForMessage));
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-4
@@ -25,6 +25,7 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.lang.descriptors.*;
|
import org.jetbrains.jet.lang.descriptors.*;
|
||||||
import org.jetbrains.jet.lang.psi.*;
|
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.calls.autocasts.DataFlowInfo;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
|
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.data.JetClassInfoUtil;
|
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<D extends DeclarationDescriptor, DP extends DeclarationProvider> implements JetScope {
|
public abstract class AbstractLazyMemberScope<D extends DeclarationDescriptor, DP extends DeclarationProvider> implements JetScope {
|
||||||
protected final ResolveSession resolveSession;
|
protected final ResolveSession resolveSession;
|
||||||
|
protected final BindingTrace trace;
|
||||||
protected final DP declarationProvider;
|
protected final DP declarationProvider;
|
||||||
protected final D thisDescriptor;
|
protected final D thisDescriptor;
|
||||||
|
|
||||||
@@ -57,9 +59,11 @@ public abstract class AbstractLazyMemberScope<D extends DeclarationDescriptor, D
|
|||||||
protected AbstractLazyMemberScope(
|
protected AbstractLazyMemberScope(
|
||||||
@NotNull ResolveSession resolveSession,
|
@NotNull ResolveSession resolveSession,
|
||||||
@NotNull DP declarationProvider,
|
@NotNull DP declarationProvider,
|
||||||
@NotNull D thisDescriptor
|
@NotNull D thisDescriptor,
|
||||||
|
@NotNull BindingTrace trace
|
||||||
) {
|
) {
|
||||||
this.resolveSession = resolveSession;
|
this.resolveSession = resolveSession;
|
||||||
|
this.trace = trace;
|
||||||
this.declarationProvider = declarationProvider;
|
this.declarationProvider = declarationProvider;
|
||||||
this.thisDescriptor = thisDescriptor;
|
this.thisDescriptor = thisDescriptor;
|
||||||
|
|
||||||
@@ -136,7 +140,7 @@ public abstract class AbstractLazyMemberScope<D extends DeclarationDescriptor, D
|
|||||||
result.add(resolveSession.getDescriptorResolver().resolveFunctionDescriptorWithAnnotationArguments(
|
result.add(resolveSession.getDescriptorResolver().resolveFunctionDescriptorWithAnnotationArguments(
|
||||||
thisDescriptor, resolutionScope,
|
thisDescriptor, resolutionScope,
|
||||||
functionDeclaration,
|
functionDeclaration,
|
||||||
resolveSession.getTrace(),
|
trace,
|
||||||
// this relies on the assumption that a lazily resolved declaration is not a local one,
|
// this relies on the assumption that a lazily resolved declaration is not a local one,
|
||||||
// thus doesn't have a surrounding data flow
|
// thus doesn't have a surrounding data flow
|
||||||
DataFlowInfo.EMPTY)
|
DataFlowInfo.EMPTY)
|
||||||
@@ -170,12 +174,12 @@ public abstract class AbstractLazyMemberScope<D extends DeclarationDescriptor, D
|
|||||||
resolveSession.getDescriptorResolver().resolvePropertyDescriptor(
|
resolveSession.getDescriptorResolver().resolvePropertyDescriptor(
|
||||||
thisDescriptor, resolutionScope,
|
thisDescriptor, resolutionScope,
|
||||||
propertyDeclaration,
|
propertyDeclaration,
|
||||||
resolveSession.getTrace(),
|
trace,
|
||||||
// this relies on the assumption that a lazily resolved declaration is not a local one,
|
// this relies on the assumption that a lazily resolved declaration is not a local one,
|
||||||
// thus doesn't have a surrounding data flow
|
// thus doesn't have a surrounding data flow
|
||||||
DataFlowInfo.EMPTY);
|
DataFlowInfo.EMPTY);
|
||||||
result.add(propertyDescriptor);
|
result.add(propertyDescriptor);
|
||||||
resolveSession.getAnnotationResolver().resolveAnnotationsArguments(propertyDescriptor, resolveSession.getTrace(), resolutionScope);
|
resolveSession.getAnnotationResolver().resolveAnnotationsArguments(propertyDescriptor, trace, resolutionScope);
|
||||||
}
|
}
|
||||||
|
|
||||||
getNonDeclaredProperties(name, result);
|
getNonDeclaredProperties(name, result);
|
||||||
|
|||||||
+14
-6
@@ -31,10 +31,7 @@ import org.jetbrains.jet.lang.descriptors.*;
|
|||||||
import org.jetbrains.jet.lang.descriptors.annotations.Annotations;
|
import org.jetbrains.jet.lang.descriptors.annotations.Annotations;
|
||||||
import org.jetbrains.jet.lang.descriptors.impl.ClassDescriptorBase;
|
import org.jetbrains.jet.lang.descriptors.impl.ClassDescriptorBase;
|
||||||
import org.jetbrains.jet.lang.psi.*;
|
import org.jetbrains.jet.lang.psi.*;
|
||||||
import org.jetbrains.jet.lang.resolve.AnnotationResolver;
|
import org.jetbrains.jet.lang.resolve.*;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
|
||||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
|
||||||
import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver;
|
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.ForceResolveUtil;
|
import org.jetbrains.jet.lang.resolve.lazy.ForceResolveUtil;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.LazyEntity;
|
import org.jetbrains.jet.lang.resolve.lazy.LazyEntity;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
|
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
|
||||||
@@ -69,6 +66,7 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements ClassDes
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
private final ResolveSession resolveSession;
|
private final ResolveSession resolveSession;
|
||||||
|
|
||||||
private final JetClassLikeInfo originalClassInfo;
|
private final JetClassLikeInfo originalClassInfo;
|
||||||
private final ClassMemberDeclarationProvider declarationProvider;
|
private final ClassMemberDeclarationProvider declarationProvider;
|
||||||
|
|
||||||
@@ -93,7 +91,8 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements ClassDes
|
|||||||
@NotNull ResolveSession resolveSession,
|
@NotNull ResolveSession resolveSession,
|
||||||
@NotNull DeclarationDescriptor containingDeclaration,
|
@NotNull DeclarationDescriptor containingDeclaration,
|
||||||
@NotNull Name name,
|
@NotNull Name name,
|
||||||
@NotNull JetClassLikeInfo classLikeInfo
|
@NotNull JetClassLikeInfo classLikeInfo,
|
||||||
|
@NotNull BindingTrace traceForMembers // = resolveSession.getTrace()
|
||||||
) {
|
) {
|
||||||
super(resolveSession.getStorageManager(), containingDeclaration, name);
|
super(resolveSession.getStorageManager(), containingDeclaration, name);
|
||||||
this.resolveSession = resolveSession;
|
this.resolveSession = resolveSession;
|
||||||
@@ -106,7 +105,7 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements ClassDes
|
|||||||
this.originalClassInfo = classLikeInfo;
|
this.originalClassInfo = classLikeInfo;
|
||||||
this.declarationProvider = resolveSession.getDeclarationProviderFactory().getClassMemberDeclarationProvider(classLikeInfo);
|
this.declarationProvider = resolveSession.getDeclarationProviderFactory().getClassMemberDeclarationProvider(classLikeInfo);
|
||||||
|
|
||||||
this.unsubstitutedMemberScope = new LazyClassMemberScope(resolveSession, declarationProvider, this);
|
this.unsubstitutedMemberScope = new LazyClassMemberScope(resolveSession, declarationProvider, this, traceForMembers);
|
||||||
|
|
||||||
this.typeConstructor = new LazyClassTypeConstructor();
|
this.typeConstructor = new LazyClassTypeConstructor();
|
||||||
|
|
||||||
@@ -165,6 +164,15 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements ClassDes
|
|||||||
}, null);
|
}, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public LazyClassDescriptor(
|
||||||
|
@NotNull ResolveSession resolveSession,
|
||||||
|
@NotNull DeclarationDescriptor containingDeclaration,
|
||||||
|
@NotNull Name name,
|
||||||
|
@NotNull JetClassLikeInfo classLikeInfo
|
||||||
|
) {
|
||||||
|
this(resolveSession, containingDeclaration, name, classLikeInfo, resolveSession.getTrace());
|
||||||
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public JetScope getScopeForMemberLookup() {
|
public JetScope getScopeForMemberLookup() {
|
||||||
|
|||||||
+16
-16
@@ -76,9 +76,10 @@ public class LazyClassMemberScope extends AbstractLazyMemberScope<LazyClassDescr
|
|||||||
public LazyClassMemberScope(
|
public LazyClassMemberScope(
|
||||||
@NotNull ResolveSession resolveSession,
|
@NotNull ResolveSession resolveSession,
|
||||||
@NotNull ClassMemberDeclarationProvider declarationProvider,
|
@NotNull ClassMemberDeclarationProvider declarationProvider,
|
||||||
@NotNull LazyClassDescriptor thisClass
|
@NotNull LazyClassDescriptor thisClass,
|
||||||
|
@NotNull BindingTrace trace
|
||||||
) {
|
) {
|
||||||
super(resolveSession, declarationProvider, thisClass);
|
super(resolveSession, declarationProvider, thisClass, trace);
|
||||||
this.primaryConstructor = resolveSession.getStorageManager().createNullableLazyValue(new Function0<ConstructorDescriptor>() {
|
this.primaryConstructor = resolveSession.getStorageManager().createNullableLazyValue(new Function0<ConstructorDescriptor>() {
|
||||||
@Override
|
@Override
|
||||||
public ConstructorDescriptor invoke() {
|
public ConstructorDescriptor invoke() {
|
||||||
@@ -120,7 +121,6 @@ public class LazyClassMemberScope extends AbstractLazyMemberScope<LazyClassDescr
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void conflict(@NotNull CallableMemberDescriptor fromSuper, @NotNull CallableMemberDescriptor fromCurrent) {
|
public void conflict(@NotNull CallableMemberDescriptor fromSuper, @NotNull CallableMemberDescriptor fromCurrent) {
|
||||||
BindingTrace trace = resolveSession.getTrace();
|
|
||||||
JetDeclaration declaration = (JetDeclaration) BindingContextUtils.descriptorToDeclaration(trace.getBindingContext(),
|
JetDeclaration declaration = (JetDeclaration) BindingContextUtils.descriptorToDeclaration(trace.getBindingContext(),
|
||||||
fromCurrent);
|
fromCurrent);
|
||||||
assert declaration != null : "fromCurrent can not be a fake override";
|
assert declaration != null : "fromCurrent can not be a fake override";
|
||||||
@@ -129,7 +129,7 @@ public class LazyClassMemberScope extends AbstractLazyMemberScope<LazyClassDescr
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
OverrideResolver.resolveUnknownVisibilities(result, resolveSession.getTrace());
|
OverrideResolver.resolveUnknownVisibilities(result, trace);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@@ -139,7 +139,7 @@ public class LazyClassMemberScope extends AbstractLazyMemberScope<LazyClassDescr
|
|||||||
Set<FunctionDescriptor> functions = super.getFunctions(name);
|
Set<FunctionDescriptor> functions = super.getFunctions(name);
|
||||||
for (FunctionDescriptor functionDescriptor : functions) {
|
for (FunctionDescriptor functionDescriptor : functions) {
|
||||||
if (functionDescriptor.getKind() != FAKE_OVERRIDE && functionDescriptor.getKind() != DELEGATION) {
|
if (functionDescriptor.getKind() != FAKE_OVERRIDE && functionDescriptor.getKind() != DELEGATION) {
|
||||||
OverrideResolver.resolveUnknownVisibilityForMember(functionDescriptor, resolveSession.getTrace());
|
OverrideResolver.resolveUnknownVisibilityForMember(functionDescriptor, trace);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return functions;
|
return functions;
|
||||||
@@ -176,7 +176,7 @@ public class LazyClassMemberScope extends AbstractLazyMemberScope<LazyClassDescr
|
|||||||
if (name.equals(Name.identifier(DescriptorResolver.COMPONENT_FUNCTION_NAME_PREFIX + parameterIndex))) {
|
if (name.equals(Name.identifier(DescriptorResolver.COMPONENT_FUNCTION_NAME_PREFIX + parameterIndex))) {
|
||||||
SimpleFunctionDescriptor functionDescriptor =
|
SimpleFunctionDescriptor functionDescriptor =
|
||||||
DescriptorResolver.createComponentFunctionDescriptor(parameterIndex, property,
|
DescriptorResolver.createComponentFunctionDescriptor(parameterIndex, property,
|
||||||
parameter, thisDescriptor, resolveSession.getTrace());
|
parameter, thisDescriptor, trace);
|
||||||
result.add(functionDescriptor);
|
result.add(functionDescriptor);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -184,7 +184,7 @@ public class LazyClassMemberScope extends AbstractLazyMemberScope<LazyClassDescr
|
|||||||
if (!constructor.getValueParameters().isEmpty() && name.equals(DescriptorResolver.COPY_METHOD_NAME)) {
|
if (!constructor.getValueParameters().isEmpty() && name.equals(DescriptorResolver.COPY_METHOD_NAME)) {
|
||||||
SimpleFunctionDescriptor copyFunctionDescriptor = DescriptorResolver.createCopyFunctionDescriptor(
|
SimpleFunctionDescriptor copyFunctionDescriptor = DescriptorResolver.createCopyFunctionDescriptor(
|
||||||
constructor.getValueParameters(),
|
constructor.getValueParameters(),
|
||||||
thisDescriptor, resolveSession.getTrace());
|
thisDescriptor, trace);
|
||||||
result.add(copyFunctionDescriptor);
|
result.add(copyFunctionDescriptor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -194,12 +194,12 @@ public class LazyClassMemberScope extends AbstractLazyMemberScope<LazyClassDescr
|
|||||||
|
|
||||||
if (name.equals(DescriptorFactory.VALUES_METHOD_NAME)) {
|
if (name.equals(DescriptorFactory.VALUES_METHOD_NAME)) {
|
||||||
SimpleFunctionDescriptor valuesMethod = DescriptorResolver
|
SimpleFunctionDescriptor valuesMethod = DescriptorResolver
|
||||||
.createEnumClassObjectValuesMethod(thisDescriptor, resolveSession.getTrace());
|
.createEnumClassObjectValuesMethod(thisDescriptor, trace);
|
||||||
result.add(valuesMethod);
|
result.add(valuesMethod);
|
||||||
}
|
}
|
||||||
else if (name.equals(DescriptorFactory.VALUE_OF_METHOD_NAME)) {
|
else if (name.equals(DescriptorFactory.VALUE_OF_METHOD_NAME)) {
|
||||||
SimpleFunctionDescriptor valueOfMethod = DescriptorResolver
|
SimpleFunctionDescriptor valueOfMethod = DescriptorResolver
|
||||||
.createEnumClassObjectValueOfMethod(thisDescriptor, resolveSession.getTrace());
|
.createEnumClassObjectValueOfMethod(thisDescriptor, trace);
|
||||||
result.add(valueOfMethod);
|
result.add(valueOfMethod);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -212,7 +212,7 @@ public class LazyClassMemberScope extends AbstractLazyMemberScope<LazyClassDescr
|
|||||||
for (VariableDescriptor variableDescriptor : properties) {
|
for (VariableDescriptor variableDescriptor : properties) {
|
||||||
PropertyDescriptor propertyDescriptor = (PropertyDescriptor) variableDescriptor;
|
PropertyDescriptor propertyDescriptor = (PropertyDescriptor) variableDescriptor;
|
||||||
if (propertyDescriptor.getKind() == FAKE_OVERRIDE || propertyDescriptor.getKind() == DELEGATION) continue;
|
if (propertyDescriptor.getKind() == FAKE_OVERRIDE || propertyDescriptor.getKind() == DELEGATION) continue;
|
||||||
OverrideResolver.resolveUnknownVisibilityForMember(propertyDescriptor, resolveSession.getTrace());
|
OverrideResolver.resolveUnknownVisibilityForMember(propertyDescriptor, trace);
|
||||||
}
|
}
|
||||||
return properties;
|
return properties;
|
||||||
}
|
}
|
||||||
@@ -236,7 +236,7 @@ public class LazyClassMemberScope extends AbstractLazyMemberScope<LazyClassDescr
|
|||||||
thisDescriptor,
|
thisDescriptor,
|
||||||
valueParameterDescriptor,
|
valueParameterDescriptor,
|
||||||
thisDescriptor.getScopeForClassHeaderResolution(),
|
thisDescriptor.getScopeForClassHeaderResolution(),
|
||||||
parameter, resolveSession.getTrace()
|
parameter, trace
|
||||||
);
|
);
|
||||||
result.add(propertyDescriptor);
|
result.add(propertyDescriptor);
|
||||||
}
|
}
|
||||||
@@ -271,7 +271,7 @@ public class LazyClassMemberScope extends AbstractLazyMemberScope<LazyClassDescr
|
|||||||
return resolveSession.getTypeResolver().resolveType(
|
return resolveSession.getTypeResolver().resolveType(
|
||||||
thisDescriptor.getScopeForClassHeaderResolution(),
|
thisDescriptor.getScopeForClassHeaderResolution(),
|
||||||
reference,
|
reference,
|
||||||
resolveSession.getTrace(),
|
trace,
|
||||||
false);
|
false);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -282,7 +282,7 @@ public class LazyClassMemberScope extends AbstractLazyMemberScope<LazyClassDescr
|
|||||||
return extractor.extract(type, name);
|
return extractor.extract(type, name);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
return generateDelegatedMembers(classOrObject, thisDescriptor, existingDescriptors, resolveSession.getTrace(), lazyMemberExtractor,
|
return generateDelegatedMembers(classOrObject, thisDescriptor, existingDescriptors, trace, lazyMemberExtractor,
|
||||||
lazyTypeResolver);
|
lazyTypeResolver);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -365,13 +365,13 @@ public class LazyClassMemberScope extends AbstractLazyMemberScope<LazyClassDescr
|
|||||||
.resolvePrimaryConstructorDescriptor(thisDescriptor.getScopeForClassHeaderResolution(),
|
.resolvePrimaryConstructorDescriptor(thisDescriptor.getScopeForClassHeaderResolution(),
|
||||||
thisDescriptor,
|
thisDescriptor,
|
||||||
jetClass,
|
jetClass,
|
||||||
resolveSession.getTrace());
|
trace);
|
||||||
primaryConstructor = constructor;
|
primaryConstructor = constructor;
|
||||||
setDeferredReturnType(constructor);
|
setDeferredReturnType(constructor);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ConstructorDescriptorImpl constructor =
|
ConstructorDescriptorImpl constructor =
|
||||||
DescriptorResolver.createAndRecordPrimaryConstructorForObject(classOrObject, thisDescriptor, resolveSession.getTrace());
|
DescriptorResolver.createAndRecordPrimaryConstructorForObject(classOrObject, thisDescriptor, trace);
|
||||||
setDeferredReturnType(constructor);
|
setDeferredReturnType(constructor);
|
||||||
primaryConstructor = constructor;
|
primaryConstructor = constructor;
|
||||||
}
|
}
|
||||||
@@ -380,7 +380,7 @@ public class LazyClassMemberScope extends AbstractLazyMemberScope<LazyClassDescr
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void setDeferredReturnType(@NotNull ConstructorDescriptorImpl descriptor) {
|
private void setDeferredReturnType(@NotNull ConstructorDescriptorImpl descriptor) {
|
||||||
descriptor.setReturnType(DeferredType.create(resolveSession.getStorageManager(), resolveSession.getTrace(),
|
descriptor.setReturnType(DeferredType.create(resolveSession.getStorageManager(), trace,
|
||||||
new Function0<JetType>() {
|
new Function0<JetType>() {
|
||||||
@Override
|
@Override
|
||||||
public JetType invoke() {
|
public JetType invoke() {
|
||||||
|
|||||||
+1
-1
@@ -36,7 +36,7 @@ public class LazyPackageMemberScope extends AbstractLazyMemberScope<PackageFragm
|
|||||||
public LazyPackageMemberScope(@NotNull ResolveSession resolveSession,
|
public LazyPackageMemberScope(@NotNull ResolveSession resolveSession,
|
||||||
@NotNull PackageMemberDeclarationProvider declarationProvider,
|
@NotNull PackageMemberDeclarationProvider declarationProvider,
|
||||||
@NotNull PackageFragmentDescriptor thisPackage) {
|
@NotNull PackageFragmentDescriptor thisPackage) {
|
||||||
super(resolveSession, declarationProvider, thisPackage);
|
super(resolveSession, declarationProvider, thisPackage, resolveSession.getTrace());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
|
|||||||
+4
-1
@@ -48,6 +48,8 @@ import org.jetbrains.jet.lang.psi.JetTypeParameter
|
|||||||
import org.jetbrains.jet.lang.resolve.scopes.RedeclarationHandler
|
import org.jetbrains.jet.lang.resolve.scopes.RedeclarationHandler
|
||||||
import org.jetbrains.jet.lang.psi.JetCallableDeclaration
|
import org.jetbrains.jet.lang.psi.JetCallableDeclaration
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.WritableScope
|
import org.jetbrains.jet.lang.resolve.scopes.WritableScope
|
||||||
|
import org.jetbrains.jet.lang.resolve.BindingTrace
|
||||||
|
import org.jetbrains.jet.lang.resolve.TemporaryBindingTrace
|
||||||
|
|
||||||
public class LazyScriptDescriptor(
|
public class LazyScriptDescriptor(
|
||||||
val resolveSession: ResolveSession,
|
val resolveSession: ResolveSession,
|
||||||
@@ -93,7 +95,8 @@ public class LazyScriptDescriptor(
|
|||||||
override fun getClassKind() = ClassKind.CLASS
|
override fun getClassKind() = ClassKind.CLASS
|
||||||
override fun getDeclarations() = jetScript.getDeclarations()
|
override fun getDeclarations() = jetScript.getDeclarations()
|
||||||
.filter { ScriptBodyResolver.shouldBeScriptClassMember(it) }
|
.filter { ScriptBodyResolver.shouldBeScriptClassMember(it) }
|
||||||
}
|
},
|
||||||
|
TemporaryBindingTrace.create(resolveSession.getTrace(), "A trace for script class, needed to avoid rewrites on members")
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user