From 0d04dc6f990bafeaefa129928305404951f538a0 Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Wed, 27 Mar 2019 22:13:42 +0300 Subject: [PATCH] Debugger: Allow to touch experimental stuff from evaluator (KT-30216) --- .../debugger/evaluate/KotlinEvaluationBuilder.kt | 3 ++- .../evaluate/singleBreakpoint/experimentalApi.kt | 15 +++++++++++++++ .../evaluate/singleBreakpoint/experimentalApi.out | 8 ++++++++ .../KotlinEvaluateExpressionTestGenerated.java | 5 +++++ 4 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 idea/testData/debugger/tinyApp/src/evaluate/singleBreakpoint/experimentalApi.kt create mode 100644 idea/testData/debugger/tinyApp/src/evaluate/singleBreakpoint/experimentalApi.out diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluationBuilder.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluationBuilder.kt index b42ad906172..6af8e765281 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluationBuilder.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluationBuilder.kt @@ -383,7 +383,8 @@ class KotlinEvaluator(val codeFragment: KtCodeFragment, val sourcePosition: Sour override fun getModifier() = null companion object { - private val IGNORED_DIAGNOSTICS: Set> = Errors.INVISIBLE_REFERENCE_DIAGNOSTICS + private val IGNORED_DIAGNOSTICS: Set> = + Errors.INVISIBLE_REFERENCE_DIAGNOSTICS + setOf(Errors.EXPERIMENTAL_API_USAGE_ERROR) private val DEFAULT_METHOD_MARKERS = listOf(AsmTypes.OBJECT_TYPE, AsmTypes.DEFAULT_CONSTRUCTOR_MARKER) diff --git a/idea/testData/debugger/tinyApp/src/evaluate/singleBreakpoint/experimentalApi.kt b/idea/testData/debugger/tinyApp/src/evaluate/singleBreakpoint/experimentalApi.kt new file mode 100644 index 00000000000..0118bae0e39 --- /dev/null +++ b/idea/testData/debugger/tinyApp/src/evaluate/singleBreakpoint/experimentalApi.kt @@ -0,0 +1,15 @@ +package experimentalApi + +@Experimental(Experimental.Level.ERROR) +annotation class UnstableApi + +@UnstableApi +fun foo() = 5 + +fun main() { + //Breakpoint! + val a = 5 +} + +// EXPRESSION: foo() +// RESULT: 5: I \ No newline at end of file diff --git a/idea/testData/debugger/tinyApp/src/evaluate/singleBreakpoint/experimentalApi.out b/idea/testData/debugger/tinyApp/src/evaluate/singleBreakpoint/experimentalApi.out new file mode 100644 index 00000000000..db5cadf17ce --- /dev/null +++ b/idea/testData/debugger/tinyApp/src/evaluate/singleBreakpoint/experimentalApi.out @@ -0,0 +1,8 @@ +LineBreakpoint created at experimentalApi.kt:11 +Run Java +Connected to the target VM +experimentalApi.kt:11 +Compile bytecode for foo() +Disconnected from the target VM + +Process finished with exit code 0 diff --git a/idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluateExpressionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluateExpressionTestGenerated.java index 9a2c7e02cfd..a1ea5035acd 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluateExpressionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinEvaluateExpressionTestGenerated.java @@ -141,6 +141,11 @@ public class KotlinEvaluateExpressionTestGenerated extends AbstractKotlinEvaluat runTest("idea/testData/debugger/tinyApp/src/evaluate/singleBreakpoint/escapedNames.kt"); } + @TestMetadata("experimentalApi.kt") + public void testExperimentalApi() throws Exception { + runTest("idea/testData/debugger/tinyApp/src/evaluate/singleBreakpoint/experimentalApi.kt"); + } + @TestMetadata("extractLocalVariables.kt") public void testExtractLocalVariables() throws Exception { runTest("idea/testData/debugger/tinyApp/src/evaluate/singleBreakpoint/extractLocalVariables.kt");