diff --git a/jvm/jvm-analysis-impl/resources/META-INF/JvmAnalysisPlugin.xml b/jvm/jvm-analysis-impl/resources/META-INF/JvmAnalysisPlugin.xml
index d2cd418ecec4..535209475b08 100644
--- a/jvm/jvm-analysis-impl/resources/META-INF/JvmAnalysisPlugin.xml
+++ b/jvm/jvm-analysis-impl/resources/META-INF/JvmAnalysisPlugin.xml
@@ -40,8 +40,11 @@
-
+
+
+
-
+
\ No newline at end of file
diff --git a/jvm/jvm-analysis-impl/src/com/intellij/analysis/internal/DumpUastTreeAction.kt b/jvm/jvm-analysis-impl/src/com/intellij/analysis/internal/DumpUastTreeAction.kt
index 939d3322ef35..f6bc909c79fb 100644
--- a/jvm/jvm-analysis-impl/src/com/intellij/analysis/internal/DumpUastTreeAction.kt
+++ b/jvm/jvm-analysis-impl/src/com/intellij/analysis/internal/DumpUastTreeAction.kt
@@ -12,18 +12,19 @@ import com.intellij.openapi.application.runReadAction
import com.intellij.openapi.fileEditor.FileEditorManager
import com.intellij.openapi.fileEditor.OpenFileDescriptor
import com.intellij.openapi.fileTypes.PlainTextLanguage
+import com.intellij.psi.PsiFile
import com.intellij.testFramework.LightVirtualFile
import org.jetbrains.uast.UastLanguagePlugin
import org.jetbrains.uast.asRecursiveLogString
import org.jetbrains.uast.toUElement
-class DumpUastTreeAction : AnAction() {
+open class DumpUastTreeAction : AnAction() {
override fun actionPerformed(e: AnActionEvent) {
val file = e.getData(LangDataKeys.PSI_FILE) ?: return
val project = e.project ?: return
- val dump = runReadAction { file.toUElement()?.asRecursiveLogString() }
+ val dump = runReadAction { buildDump(file) }
if (dump == null) {
Notifications.Bus.notify(
Notification("UAST", "UAST", "Can't build UAST tree for file '${file.name}'", NotificationType.ERROR)
@@ -37,6 +38,8 @@ class DumpUastTreeAction : AnAction() {
)
}
+ open fun buildDump(file: PsiFile) = file.toUElement()?.asRecursiveLogString()
+
override fun update(e: AnActionEvent) {
e.presentation.isEnabledAndVisible = ApplicationManager.getApplication().isInternal && run {
val file = e.getData(LangDataKeys.PSI_FILE) ?: return@run false
diff --git a/jvm/jvm-analysis-impl/src/com/intellij/analysis/internal/DumpUastTreeActionByEach.kt b/jvm/jvm-analysis-impl/src/com/intellij/analysis/internal/DumpUastTreeActionByEach.kt
new file mode 100644
index 000000000000..41c9952c42de
--- /dev/null
+++ b/jvm/jvm-analysis-impl/src/com/intellij/analysis/internal/DumpUastTreeActionByEach.kt
@@ -0,0 +1,14 @@
+// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
+package com.intellij.analysis.internal
+
+import com.intellij.psi.PsiElement
+import com.intellij.psi.PsiFile
+import org.jetbrains.uast.toUElement
+import org.jetbrains.uast.util.IndentedPrintingVisitor
+
+class DumpUastTreeActionByEach : DumpUastTreeAction() {
+
+ override fun buildDump(file: PsiFile): String? = object : IndentedPrintingVisitor({true}){
+ override fun render(element: PsiElement): CharSequence? = element.toUElement()?.asLogString()
+ }.also { file.accept(it) }.result
+}
\ No newline at end of file
diff --git a/uast/uast-tests/src/org/jetbrains/uast/test/common/IndentedPrintingVisitor.kt b/uast/uast-common/src/org/jetbrains/uast/util/IndentedPrintingVisitor.kt
similarity index 96%
rename from uast/uast-tests/src/org/jetbrains/uast/test/common/IndentedPrintingVisitor.kt
rename to uast/uast-common/src/org/jetbrains/uast/util/IndentedPrintingVisitor.kt
index 27e02658fc69..e6d522f03201 100644
--- a/uast/uast-tests/src/org/jetbrains/uast/test/common/IndentedPrintingVisitor.kt
+++ b/uast/uast-common/src/org/jetbrains/uast/util/IndentedPrintingVisitor.kt
@@ -1,5 +1,5 @@
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
-package org.jetbrains.uast.test.common
+package org.jetbrains.uast.util
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiElementVisitor
diff --git a/uast/uast-tests/src/org/jetbrains/uast/test/common/IdentifiersTestBase.kt b/uast/uast-tests/src/org/jetbrains/uast/test/common/IdentifiersTestBase.kt
index ccdc52d2ca1e..a0470f0369c8 100644
--- a/uast/uast-tests/src/org/jetbrains/uast/test/common/IdentifiersTestBase.kt
+++ b/uast/uast-tests/src/org/jetbrains/uast/test/common/IdentifiersTestBase.kt
@@ -7,6 +7,7 @@ import com.intellij.psi.PsiCodeBlock
import com.intellij.psi.PsiElement
import junit.framework.TestCase
import org.jetbrains.uast.*
+import org.jetbrains.uast.util.IndentedPrintingVisitor
import kotlin.reflect.KClass
diff --git a/uast/uast-tests/test/org/jetbrains/uast/test/java/AbstractJavaResolveEverythingTest.kt b/uast/uast-tests/test/org/jetbrains/uast/test/java/AbstractJavaResolveEverythingTest.kt
index 9e0f5390750d..c6d2fa05b2ef 100644
--- a/uast/uast-tests/test/org/jetbrains/uast/test/java/AbstractJavaResolveEverythingTest.kt
+++ b/uast/uast-tests/test/org/jetbrains/uast/test/java/AbstractJavaResolveEverythingTest.kt
@@ -7,7 +7,7 @@ import com.intellij.psi.PsiIdentifier
import com.intellij.psi.PsiModifierListOwner
import org.jetbrains.uast.UFile
import org.jetbrains.uast.UReferenceExpression
-import org.jetbrains.uast.test.common.IndentedPrintingVisitor
+import org.jetbrains.uast.util.IndentedPrintingVisitor
import org.jetbrains.uast.test.common.visitUFileAndGetResult
import org.jetbrains.uast.test.env.assertEqualsToFile
import org.jetbrains.uast.toUElementOfType