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