diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetElementImpl.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetElementImpl.java index c07078f1397..e6546de5e16 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetElementImpl.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetElementImpl.java @@ -55,13 +55,7 @@ public class JetElementImpl extends ASTWrapperPsiElement implements JetElement { @Override public void acceptChildren(@NotNull JetTreeVisitor visitor, D data) { - PsiElement child = getFirstChild(); - while (child != null) { - if (child instanceof JetElement) { - ((JetElement) child).accept(visitor, data); - } - child = child.getNextSibling(); - } + JetPsiUtil.visitChildren(this, visitor, data); } @Override diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetFile.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetFile.java index e0ac973a34c..44b0fae9d91 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetFile.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetFile.java @@ -34,7 +34,7 @@ import org.jetbrains.jet.plugin.JetLanguage; import java.util.List; -public class JetFile extends PsiFileBase implements JetDeclarationContainer { +public class JetFile extends PsiFileBase implements JetDeclarationContainer, JetElement { public JetFile(FileViewProvider viewProvider) { super(viewProvider, JetLanguage.INSTANCE); } @@ -111,10 +111,25 @@ public class JetFile extends PsiFileBase implements JetDeclarationContainer { @Override public void accept(@NotNull PsiElementVisitor visitor) { if (visitor instanceof JetVisitorVoid) { - ((JetVisitorVoid) visitor).visitJetFile(this); + accept((JetVisitorVoid) visitor); } else { visitor.visitFile(this); } } + + @Override + public void acceptChildren(@NotNull JetTreeVisitor visitor, D data) { + JetPsiUtil.visitChildren(this, visitor, data); + } + + @Override + public void accept(@NotNull JetVisitorVoid visitor) { + visitor.visitJetFile(this); + } + + @Override + public R accept(@NotNull JetVisitor visitor, D data) { + return visitor.visitJetFile(this, data); + } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetPsiUtil.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetPsiUtil.java index 492008697b4..0ecdc5c95da 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetPsiUtil.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetPsiUtil.java @@ -51,6 +51,16 @@ public class JetPsiUtil { private JetPsiUtil() { } + public static void visitChildren(@NotNull JetElement element, @NotNull JetTreeVisitor visitor, D data) { + PsiElement child = element.getFirstChild(); + while (child != null) { + if (child instanceof JetElement) { + ((JetElement) child).accept(visitor, data); + } + child = child.getNextSibling(); + } + } + @Nullable public static JetExpression deparenthesizeWithNoTypeResolution(@NotNull JetExpression expression) { return deparenthesizeWithResolutionStrategy(expression, null);