Support top-down analysis starting from package directives
This commit is contained in:
@@ -137,5 +137,10 @@ public class JetPackageDirective extends JetReferenceExpression {
|
|||||||
public void subtreeChanged() {
|
public void subtreeChanged() {
|
||||||
qualifiedNameCache = null;
|
qualifiedNameCache = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <R, D> R accept(@NotNull JetVisitor<R, D> visitor, D data) {
|
||||||
|
return visitor.visitPackageDirective(this, data);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -405,4 +405,8 @@ public class JetVisitor<R, D> extends PsiElementVisitor {
|
|||||||
public R visitEscapeStringTemplateEntry(@NotNull JetEscapeStringTemplateEntry entry, D data) {
|
public R visitEscapeStringTemplateEntry(@NotNull JetEscapeStringTemplateEntry entry, D data) {
|
||||||
return visitStringTemplateEntry(entry, data);
|
return visitStringTemplateEntry(entry, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public R visitPackageDirective(@NotNull JetPackageDirective directive, D data) {
|
||||||
|
return visitExpression(directive, data);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -401,6 +401,10 @@ public class JetVisitorVoid extends JetVisitor<Void, Void> {
|
|||||||
super.visitEscapeStringTemplateEntry(entry, null);
|
super.visitEscapeStringTemplateEntry(entry, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void visitPackageDirective(@NotNull JetPackageDirective directive) {
|
||||||
|
super.visitPackageDirective(directive, null);
|
||||||
|
}
|
||||||
|
|
||||||
// hidden methods
|
// hidden methods
|
||||||
@Override
|
@Override
|
||||||
public final Void visitJetElement(@NotNull JetElement element, Void data) {
|
public final Void visitJetElement(@NotNull JetElement element, Void data) {
|
||||||
@@ -973,4 +977,10 @@ public class JetVisitorVoid extends JetVisitor<Void, Void> {
|
|||||||
visitEscapeStringTemplateEntry(entry);
|
visitEscapeStringTemplateEntry(entry);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Void visitPackageDirective(@NotNull JetPackageDirective directive, Void data) {
|
||||||
|
visitPackageDirective(directive);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -124,7 +124,7 @@ public class LazyTopDownAnalyzer {
|
|||||||
|
|
||||||
c.addFile(file);
|
c.addFile(file);
|
||||||
|
|
||||||
DescriptorResolver.resolvePackageHeader(packageDirective, moduleDescriptor, trace);
|
packageDirective.accept(this);
|
||||||
DescriptorResolver.registerFileInPackage(trace, file);
|
DescriptorResolver.registerFileInPackage(trace, file);
|
||||||
|
|
||||||
registerDeclarations(file.getDeclarations());
|
registerDeclarations(file.getDeclarations());
|
||||||
@@ -133,6 +133,11 @@ public class LazyTopDownAnalyzer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void visitPackageDirective(@NotNull JetPackageDirective directive) {
|
||||||
|
DescriptorResolver.resolvePackageHeader(directive, moduleDescriptor, trace);
|
||||||
|
}
|
||||||
|
|
||||||
private void visitClassOrObject(@NotNull JetClassOrObject classOrObject) {
|
private void visitClassOrObject(@NotNull JetClassOrObject classOrObject) {
|
||||||
ClassDescriptorWithResolutionScopes descriptor =
|
ClassDescriptorWithResolutionScopes descriptor =
|
||||||
(ClassDescriptorWithResolutionScopes) resolveSession.getClassDescriptor(classOrObject);
|
(ClassDescriptorWithResolutionScopes) resolveSession.getClassDescriptor(classOrObject);
|
||||||
|
|||||||
Reference in New Issue
Block a user