Do not inject TopDownAnalysisContext into OverrideResolver
This commit is contained in:
@@ -286,7 +286,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
|
|
||||||
overloadResolver.setTrace(bindingTrace);
|
overloadResolver.setTrace(bindingTrace);
|
||||||
|
|
||||||
overrideResolver.setContext(topDownAnalysisContext);
|
|
||||||
overrideResolver.setTopDownAnalysisParameters(topDownAnalysisParameters);
|
overrideResolver.setTopDownAnalysisParameters(topDownAnalysisParameters);
|
||||||
overrideResolver.setTrace(bindingTrace);
|
overrideResolver.setTrace(bindingTrace);
|
||||||
|
|
||||||
|
|||||||
@@ -241,7 +241,6 @@ public class InjectorForTopDownAnalyzerBasic {
|
|||||||
|
|
||||||
overloadResolver.setTrace(bindingTrace);
|
overloadResolver.setTrace(bindingTrace);
|
||||||
|
|
||||||
overrideResolver.setContext(topDownAnalysisContext);
|
|
||||||
overrideResolver.setTopDownAnalysisParameters(topDownAnalysisParameters);
|
overrideResolver.setTopDownAnalysisParameters(topDownAnalysisParameters);
|
||||||
overrideResolver.setTrace(bindingTrace);
|
overrideResolver.setTrace(bindingTrace);
|
||||||
|
|
||||||
|
|||||||
@@ -48,16 +48,9 @@ import static org.jetbrains.jet.lang.resolve.OverridingUtil.OverrideCompatibilit
|
|||||||
|
|
||||||
public class OverrideResolver {
|
public class OverrideResolver {
|
||||||
|
|
||||||
private TopDownAnalysisContext context;
|
|
||||||
private TopDownAnalysisParameters topDownAnalysisParameters;
|
private TopDownAnalysisParameters topDownAnalysisParameters;
|
||||||
private BindingTrace trace;
|
private BindingTrace trace;
|
||||||
|
|
||||||
|
|
||||||
@Inject
|
|
||||||
public void setContext(TopDownAnalysisContext context) {
|
|
||||||
this.context = context;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public void setTopDownAnalysisParameters(TopDownAnalysisParameters topDownAnalysisParameters) {
|
public void setTopDownAnalysisParameters(TopDownAnalysisParameters topDownAnalysisParameters) {
|
||||||
this.topDownAnalysisParameters = topDownAnalysisParameters;
|
this.topDownAnalysisParameters = topDownAnalysisParameters;
|
||||||
@@ -70,23 +63,23 @@ public class OverrideResolver {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void process() {
|
public void process(@NotNull TopDownAnalysisContext c) {
|
||||||
//all created fake descriptors are stored to resolve visibility on them later
|
//all created fake descriptors are stored to resolve visibility on them later
|
||||||
generateOverridesAndDelegation();
|
generateOverridesAndDelegation(c);
|
||||||
|
|
||||||
checkVisibility();
|
checkVisibility(c);
|
||||||
checkOverrides();
|
checkOverrides(c);
|
||||||
checkParameterOverridesForAllClasses();
|
checkParameterOverridesForAllClasses(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generate fake overrides and add overridden descriptors to existing descriptors.
|
* Generate fake overrides and add overridden descriptors to existing descriptors.
|
||||||
*/
|
*/
|
||||||
private void generateOverridesAndDelegation() {
|
private void generateOverridesAndDelegation(@NotNull TopDownAnalysisContext c) {
|
||||||
Set<ClassDescriptorWithResolutionScopes> ourClasses = new HashSet<ClassDescriptorWithResolutionScopes>(context.getClasses().values());
|
Set<ClassDescriptorWithResolutionScopes> ourClasses = new HashSet<ClassDescriptorWithResolutionScopes>(c.getClasses().values());
|
||||||
Set<ClassifierDescriptor> processed = new HashSet<ClassifierDescriptor>();
|
Set<ClassifierDescriptor> processed = new HashSet<ClassifierDescriptor>();
|
||||||
|
|
||||||
for (MutableClassDescriptorLite klass : ContainerUtil.reverse(context.getClassesTopologicalOrder())) {
|
for (MutableClassDescriptorLite klass : ContainerUtil.reverse(c.getClassesTopologicalOrder())) {
|
||||||
if (klass instanceof MutableClassDescriptor && ourClasses.contains(klass)) {
|
if (klass instanceof MutableClassDescriptor && ourClasses.contains(klass)) {
|
||||||
generateOverridesAndDelegationInAClass((MutableClassDescriptor) klass, processed, ourClasses);
|
generateOverridesAndDelegationInAClass((MutableClassDescriptor) klass, processed, ourClasses);
|
||||||
|
|
||||||
@@ -216,8 +209,8 @@ public class OverrideResolver {
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkOverrides() {
|
private void checkOverrides(@NotNull TopDownAnalysisContext c) {
|
||||||
for (Map.Entry<JetClassOrObject, ClassDescriptorWithResolutionScopes> entry : context.getClasses().entrySet()) {
|
for (Map.Entry<JetClassOrObject, ClassDescriptorWithResolutionScopes> entry : c.getClasses().entrySet()) {
|
||||||
checkOverridesInAClass((MutableClassDescriptor) entry.getValue(), entry.getKey());
|
checkOverridesInAClass((MutableClassDescriptor) entry.getValue(), entry.getKey());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -651,8 +644,8 @@ public class OverrideResolver {
|
|||||||
return invisibleOverride;
|
return invisibleOverride;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkParameterOverridesForAllClasses() {
|
private void checkParameterOverridesForAllClasses(@NotNull TopDownAnalysisContext c) {
|
||||||
for (ClassDescriptorWithResolutionScopes classDescriptor : context.getClasses().values()) {
|
for (ClassDescriptorWithResolutionScopes classDescriptor : c.getClasses().values()) {
|
||||||
for (DeclarationDescriptor member : classDescriptor.getDefaultType().getMemberScope().getAllDescriptors()) {
|
for (DeclarationDescriptor member : classDescriptor.getDefaultType().getMemberScope().getAllDescriptors()) {
|
||||||
if (member instanceof CallableMemberDescriptor) {
|
if (member instanceof CallableMemberDescriptor) {
|
||||||
checkOverridesForParameters((CallableMemberDescriptor) member);
|
checkOverridesForParameters((CallableMemberDescriptor) member);
|
||||||
@@ -726,8 +719,8 @@ public class OverrideResolver {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkVisibility() {
|
private void checkVisibility(@NotNull TopDownAnalysisContext c) {
|
||||||
for (Map.Entry<JetDeclaration, CallableMemberDescriptor> entry : context.getMembers().entrySet()) {
|
for (Map.Entry<JetDeclaration, CallableMemberDescriptor> entry : c.getMembers().entrySet()) {
|
||||||
checkVisibilityForMember(entry.getKey(), entry.getValue());
|
checkVisibilityForMember(entry.getKey(), entry.getValue());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ public class TopDownAnalyzer {
|
|||||||
|
|
||||||
typeHierarchyResolver.process(outerScope, owner, declarations);
|
typeHierarchyResolver.process(outerScope, owner, declarations);
|
||||||
declarationResolver.process(c);
|
declarationResolver.process(c);
|
||||||
overrideResolver.process();
|
overrideResolver.process(c);
|
||||||
|
|
||||||
lockScopes(c);
|
lockScopes(c);
|
||||||
|
|
||||||
|
|||||||
@@ -241,7 +241,6 @@ public class InjectorForTopDownAnalyzerForJs {
|
|||||||
|
|
||||||
overloadResolver.setTrace(bindingTrace);
|
overloadResolver.setTrace(bindingTrace);
|
||||||
|
|
||||||
overrideResolver.setContext(topDownAnalysisContext);
|
|
||||||
overrideResolver.setTopDownAnalysisParameters(topDownAnalysisParameters);
|
overrideResolver.setTopDownAnalysisParameters(topDownAnalysisParameters);
|
||||||
overrideResolver.setTrace(bindingTrace);
|
overrideResolver.setTrace(bindingTrace);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user