IDEA-152031 Can't evaluate expression referencing program arguments from Groovy
authorEgor.Ushakov <egor.ushakov@jetbrains.com>
Wed, 24 Feb 2016 16:51:40 +0000 (19:51 +0300)
committerEgor.Ushakov <egor.ushakov@jetbrains.com>
Wed, 24 Feb 2016 16:56:03 +0000 (19:56 +0300)
plugins/groovy/src/org/jetbrains/plugins/groovy/debugger/GroovyCodeFragmentFactory.java
plugins/groovy/test/org/jetbrains/plugins/groovy/compiler/GroovyDebuggerTest.groovy

index 5414274e532c6579759d497111a298d3696fca0f..23904fd430c885fc8a0c4118e12d7b0c1bd46412 100644 (file)
@@ -247,7 +247,7 @@ public class GroovyCodeFragmentFactory extends CodeFragmentFactory {
           return;
         }
 
-        if (resolved instanceof PsiLocalVariable) {
+        if (resolved instanceof PsiLocalVariable || resolved instanceof PsiParameter) {
           String name = referenceExpression.getReferenceName();
           parameters.put(name, name);
         }
index 34909f4b21dd036d2cc2d6cdc96abfb55d3fb7ba..97f3fc378e556ed170b4fd8d4b95757512d7044f 100644 (file)
@@ -552,6 +552,29 @@ public class Main {
     }
   }
 
+  public void "test evaluation of params in java context"() {
+    def starterFile = myFixture.addFileToProject 'Gr.groovy', '''
+new Main().foo((String[])["a", "b", "c"])
+'''
+    def file = myFixture.addFileToProject 'Main.java', '''
+import java.util.Arrays;
+import java.util.List;
+
+public class Main {
+  void foo(String[] a) {
+     int x = 5; // 6
+  }
+}
+'''
+    make()
+
+    addBreakpoint file.virtualFile, 6
+    runDebugger starterFile, {
+      waitForBreakpoint()
+      eval 'a[1]', 'b', GroovyFileType.GROOVY_FILE_TYPE
+    }
+  }
+
   private def addBreakpoint(String fileName, int line) {
     VirtualFile file = null
     edt {