You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by pp...@apache.org on 2022/02/22 11:15:19 UTC
[netbeans] branch master updated: [NETBEANS-6463] Code completion doesn't offer methods from the same class
This is an automated email from the ASF dual-hosted git repository.
ppisl pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans.git
The following commit(s) were added to refs/heads/master by this push:
new 0431b53 [NETBEANS-6463] Code completion doesn't offer methods from the same class
new 09075dc Merge pull request #3654 from ppisl/NETBEANS-6463
0431b53 is described below
commit 0431b53a7c0c0ebd56bcb8bb334b98e9687953c4
Author: Petr Pisl <pe...@oracle.com>
AuthorDate: Mon Feb 21 16:03:17 2022 +0100
[NETBEANS-6463] Code completion doesn't offer methods from the same class
---
.../api/completion/util/CompletionContext.java | 14 +++-
.../groovy/editor/completion/MethodCompletion.java | 2 +-
...Closure1.groovy.testInsideClosure1_1.completion | 86 ++++++++++++++++++++++
...Closure1.groovy.testInsideClosure1_2.completion | 10 ++-
...Closure1.groovy.testInsideClosure1_3.completion | 5 ++
...Closure1.groovy.testInsideClosure1_5.completion | 8 ++
...Closure1.groovy.testInsideClosure1_6.completion | 1 +
...Closure1.groovy.testInsideClosure1_7.completion | 10 ++-
.../completionNoDot2/CompletionNoDot2.groovy | 35 +++++++++
...NoDot2.groovy.testCompletionNoDot2_1.completion | 6 ++
...NoDot2.groovy.testCompletionNoDot2_2.completion | 6 ++
...NoDot2.groovy.testCompletionNoDot2_3.completion | 8 ++
...NoDot2.groovy.testCompletionNoDot2_4.completion | 9 +++
...NoDot2.groovy.testCompletionNoDot2_5.completion | 9 +++
...NoDot2.groovy.testCompletionNoDot2_6.completion | 9 +++
.../groovy/editor/api/completion/MethodCCTest.java | 25 +++++++
16 files changed, 237 insertions(+), 6 deletions(-)
diff --git a/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/api/completion/util/CompletionContext.java b/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/api/completion/util/CompletionContext.java
index ff67316..e407a82 100644
--- a/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/api/completion/util/CompletionContext.java
+++ b/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/api/completion/util/CompletionContext.java
@@ -36,6 +36,7 @@ import org.codehaus.groovy.ast.expr.ListExpression;
import org.codehaus.groovy.ast.expr.NamedArgumentListExpression;
import org.codehaus.groovy.ast.expr.RangeExpression;
import org.codehaus.groovy.ast.expr.VariableExpression;
+import org.codehaus.groovy.ast.stmt.BlockStatement;
import org.netbeans.api.lexer.Token;
import org.netbeans.api.lexer.TokenSequence;
import org.netbeans.editor.BaseDocument;
@@ -284,7 +285,8 @@ public final class CompletionContext {
if (t.id() == GroovyTokenId.LITERAL_package) {
return CaretLocation.ABOVE_PACKAGE;
- } else if (t.id() == GroovyTokenId.LITERAL_class || t.id() == GroovyTokenId.LITERAL_def) {
+ } else if (t.id() == GroovyTokenId.LITERAL_class || t.id() == GroovyTokenId.LITERAL_def
+ || t.id() == GroovyTokenId.LPAREN || t.id() == GroovyTokenId.LBRACE) {
break;
}
}
@@ -431,6 +433,8 @@ public final class CompletionContext {
*/
+ boolean insideBlock = false; // we need to distinquish, whether are we inside
+ // a method or in method declaration part
for (Iterator<ASTNode> it = path.iterator(); it.hasNext();) {
ASTNode current = it.next();
if (current instanceof ClosureExpression) {
@@ -441,7 +445,11 @@ public final class CompletionContext {
return CaretLocation.INSIDE_CLOSURE;
}
} else if (current instanceof MethodNode) {
- return CaretLocation.INSIDE_METHOD;
+ if (insideBlock) {
+ return CaretLocation.INSIDE_METHOD;
+ }
+ } else if (current instanceof BlockStatement) {
+ insideBlock = true;
} else if (current instanceof ClassNode) {
return CaretLocation.INSIDE_CLASS;
} else if (current instanceof ModuleNode) {
@@ -774,7 +782,7 @@ public final class CompletionContext {
DotCompletionContext dotCompletionContext = getDotCompletionContext();
// FIXME static/script context...
- if (!isBehindDot() && context.before1 == null
+ if (!isBehindDot() && (context.before1 == null || location == CaretLocation.INSIDE_METHOD)
&& (location == CaretLocation.INSIDE_CLOSURE || location == CaretLocation.INSIDE_METHOD)) {
ASTNode an = ContextHelper.getSurroundingClassMember(this);
boolean st =
diff --git a/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/completion/MethodCompletion.java b/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/completion/MethodCompletion.java
index 054b861..be8717a 100644
--- a/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/completion/MethodCompletion.java
+++ b/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/completion/MethodCompletion.java
@@ -102,7 +102,7 @@ public class MethodCompletion extends BaseCompletion {
}
// 2.2 static/instance method on class or object
- if (!context.isBehindDot() && context.context.before1 != null) {
+ if (!context.isBehindDot() && context.context.before1 != null && context.location != CaretLocation.INSIDE_METHOD) {
return false;
}
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/closures/insideClosure1/InsideClosure1.groovy.testInsideClosure1_1.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/closures/insideClosure1/InsideClosure1.groovy.testInsideClosure1_1.completion
index c4f2dd3..8dc5cbc 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/closures/insideClosure1/InsideClosure1.groovy.testInsideClosure1_1.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/closures/insideClosure1/InsideClosure1.groovy.testInsideClosure1_1.completion
@@ -490,6 +490,92 @@ CLASS WeakHashMap null
CLASS Writable null
CLASS WriteAbortedException null
CLASS Writer null
+METHOD addShutdownHook(Closure) void
+METHOD any() boolean
+METHOD any(Closure) boolean
+METHOD asBoolean() boolean
+METHOD asType(Class) Object
+METHOD clone() [PROTECTE Object
+METHOD collect() Collection
+METHOD collect(Closure) List
+METHOD collect(Collection, Closure) Collection
+METHOD dump() String
+METHOD each(Closure) Object
+METHOD eachWithIndex(Closure) Object
+METHOD equals(Object) [PUBLIC] boolean
+METHOD evaluate(File) [PUBLIC] Object
+METHOD evaluate(String) [PUBLIC] Object
+METHOD every() boolean
+METHOD every(Closure) boolean
+METHOD finalize() [PROTECTE void
+METHOD find() Object
+METHOD find(Closure) Object
+METHOD findAll() Collection
+METHOD findAll(Closure) Collection
+METHOD findIndexOf(Closure) int
+METHOD findIndexOf(int, Closure) int
+METHOD findIndexValues(Closure) List
+METHOD findIndexValues(Number, Closur List
+METHOD findLastIndexOf(Closure) int
+METHOD findLastIndexOf(int, Closure) int
+METHOD findResult(Closure) Object
+METHOD findResult(Object, Closure) Object
+METHOD getAt(String) Object
+METHOD getBinding() [PUBLIC] Binding
+METHOD getClass() [PUBLIC] Class<?>
+METHOD getMetaClass() MetaClass
+METHOD getMetaPropertyValues() List
+METHOD getProperties() Map
+METHOD getProperty(String) [PUBLIC] Object
+METHOD grep() Collection
+METHOD grep(Object) Collection
+METHOD hasProperty(String) MetaProperty
+METHOD hashCode() [PUBLIC] int
+METHOD identity(Closure) Object
+METHOD inject(Closure) Object
+METHOD inject(Object, Closure) Object
+METHOD inspect() String
+METHOD invokeMethod(String, Object) Object
+METHOD is(Object) boolean
+METHOD isCase(Object) boolean
+METHOD iterator() Iterator
+METHOD main(String[]) [STATIC, void
+METHOD metaClass(Closure) MetaClass
+METHOD notify() [PUBLIC] void
+METHOD notifyAll() [PUBLIC] void
+METHOD print(Object) void
+METHOD print(PrintWriter) void
+METHOD printf(String, Object) void
+METHOD printf(String, Object) void
+METHOD println() void
+METHOD println(Object) void
+METHOD println(PrintWriter) void
+METHOD putAt(String, Object) void
+METHOD respondsTo(String) List
+METHOD respondsTo(String, Object) List
+METHOD run() [PUBLIC] Object
+METHOD run(File, String[]) [PUBLIC] void
+METHOD setBinding(Binding) [PUBLIC] void
+METHOD setMetaClass(MetaClass) void
+METHOD setProperty(String, Object) [PUBLIC] void
+METHOD sleep(long) void
+METHOD sleep(long, Closure) void
+METHOD split(Closure) Collection
+METHOD sprintf(String, Object) String
+METHOD sprintf(String, Object) String
+METHOD stream() Stream
+METHOD tap(Closure) Object
+METHOD test() [PUBLIC] boolean
+METHOD toString() String
+METHOD use(Class, Closure) Object
+METHOD use(List, Closure) Object
+METHOD use(Object[]) Object
+METHOD wait() [PUBLIC] void
+METHOD wait(long) [PUBLIC] void
+METHOD wait(long, int) [PUBLIC] void
+METHOD with(Closure) Object
+METHOD with(boolean, Closure) Object
+METHOD withTraits(Class[]) Object
FIELD binding [PUBLIC] Binding
FIELD class [PUBLIC] Class
FIELD defaultMetaClass [PRIVATE] MetaClass
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/closures/insideClosure1/InsideClosure1.groovy.testInsideClosure1_2.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/closures/insideClosure1/InsideClosure1.groovy.testInsideClosure1_2.completion
index 9721746..4bb4d8c 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/closures/insideClosure1/InsideClosure1.groovy.testInsideClosure1_2.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/closures/insideClosure1/InsideClosure1.groovy.testInsideClosure1_2.completion
@@ -49,8 +49,16 @@ CLASS InvalidObjectException null
CLASS InvalidPropertiesFormatExcepti null
CLASS Iterable null
CLASS Iterator null
+METHOD identity(Closure) Object
+METHOD inject(Closure) Object
+METHOD inject(Object, Closure) Object
+METHOD inspect() String
+METHOD invokeMethod(String, Object) Object
+METHOD is(Object) boolean
+METHOD isCase(Object) boolean
+METHOD iterator() Iterator
VARIABLE it Object
KEYWORD if null
KEYWORD in null
KEYWORD instanceof null
-KEYWORD int null
\ No newline at end of file
+KEYWORD int null
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/closures/insideClosure1/InsideClosure1.groovy.testInsideClosure1_3.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/closures/insideClosure1/InsideClosure1.groovy.testInsideClosure1_3.completion
index 72cc7d9..452ea2b 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/closures/insideClosure1/InsideClosure1.groovy.testInsideClosure1_3.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/closures/insideClosure1/InsideClosure1.groovy.testInsideClosure1_3.completion
@@ -21,6 +21,11 @@ CLASS Arrays null
CLASS AssertionError null
CLASS Authenticator null
CLASS AutoCloseable null
+METHOD addShutdownHook(Closure) void
+METHOD any() boolean
+METHOD any(Closure) boolean
+METHOD asBoolean() boolean
+METHOD asType(Class) Object
VARIABLE aa Object
VARIABLE ab Object
KEYWORD assert null
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/closures/insideClosure1/InsideClosure1.groovy.testInsideClosure1_5.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/closures/insideClosure1/InsideClosure1.groovy.testInsideClosure1_5.completion
index a39f23e..b711da9 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/closures/insideClosure1/InsideClosure1.groovy.testInsideClosure1_5.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/closures/insideClosure1/InsideClosure1.groovy.testInsideClosure1_5.completion
@@ -49,6 +49,14 @@ CLASS InvalidObjectException null
CLASS InvalidPropertiesFormatExcepti null
CLASS Iterable null
CLASS Iterator null
+METHOD identity(Closure) Object
+METHOD inject(Closure) Object
+METHOD inject(Object, Closure) Object
+METHOD inspect() String
+METHOD invokeMethod(String, Object) Object
+METHOD is(Object) boolean
+METHOD isCase(Object) boolean
+METHOD iterator() Iterator
VARIABLE it Object
KEYWORD if null
KEYWORD in null
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/closures/insideClosure1/InsideClosure1.groovy.testInsideClosure1_6.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/closures/insideClosure1/InsideClosure1.groovy.testInsideClosure1_6.completion
index ce6fb90..cf6f17b 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/closures/insideClosure1/InsideClosure1.groovy.testInsideClosure1_6.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/closures/insideClosure1/InsideClosure1.groovy.testInsideClosure1_6.completion
@@ -2,6 +2,7 @@ Code completion result for source line:
def t2 = {test1,test2,test3 -> println test|}
(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true)
------------------------------------
+METHOD test() [PUBLIC] boolean
VARIABLE test1 Object
VARIABLE test2 Object
VARIABLE test3 Object
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/closures/insideClosure1/InsideClosure1.groovy.testInsideClosure1_7.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/closures/insideClosure1/InsideClosure1.groovy.testInsideClosure1_7.completion
index 53ad5d1..386b05e 100644
--- a/groovy/groovy.editor/test/unit/data/testfiles/completion/closures/insideClosure1/InsideClosure1.groovy.testInsideClosure1_7.completion
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/closures/insideClosure1/InsideClosure1.groovy.testInsideClosure1_7.completion
@@ -49,7 +49,15 @@ CLASS InvalidObjectException null
CLASS InvalidPropertiesFormatExcepti null
CLASS Iterable null
CLASS Iterator null
+METHOD identity(Closure) Object
+METHOD inject(Closure) Object
+METHOD inject(Object, Closure) Object
+METHOD inspect() String
+METHOD invokeMethod(String, Object) Object
+METHOD is(Object) boolean
+METHOD isCase(Object) boolean
+METHOD iterator() Iterator
KEYWORD if null
KEYWORD in null
KEYWORD instanceof null
-KEYWORD int null
\ No newline at end of file
+KEYWORD int null
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionNoDot2/CompletionNoDot2.groovy b/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionNoDot2/CompletionNoDot2.groovy
new file mode 100644
index 0000000..1828662
--- /dev/null
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionNoDot2/CompletionNoDot2.groovy
@@ -0,0 +1,35 @@
+class NoCCTest {
+ private String method1() {
+ return "Ahoj"
+ }
+
+ public void method2() {
+ String a = meth
+ }
+
+ private String case1() {
+ String a = this.method1()
+ }
+
+ private String case2() {
+ return case1()
+ }
+
+ private String case3() {
+ return case2() + case1();
+ }
+
+ private void case4() {
+ if(case1()) {
+ case2()
+ } else {
+ case3();
+ }
+ }
+
+ def m() {
+ new File("something").c
+ println "Hi"
+ }
+}
+
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionNoDot2/CompletionNoDot2.groovy.testCompletionNoDot2_1.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionNoDot2/CompletionNoDot2.groovy.testCompletionNoDot2_1.completion
new file mode 100644
index 0000000..e046441
--- /dev/null
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionNoDot2/CompletionNoDot2.groovy.testCompletionNoDot2_1.completion
@@ -0,0 +1,6 @@
+Code completion result for source line:
+String a = meth|
+(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true)
+------------------------------------
+METHOD method1() [PRIVATE] String
+METHOD method2() [PUBLIC] void
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionNoDot2/CompletionNoDot2.groovy.testCompletionNoDot2_2.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionNoDot2/CompletionNoDot2.groovy.testCompletionNoDot2_2.completion
new file mode 100644
index 0000000..c40652b
--- /dev/null
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionNoDot2/CompletionNoDot2.groovy.testCompletionNoDot2_2.completion
@@ -0,0 +1,6 @@
+Code completion result for source line:
+String a = this.meth|od1()
+(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true)
+------------------------------------
+METHOD method1() [PRIVATE] String
+METHOD method2() [PUBLIC] void
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionNoDot2/CompletionNoDot2.groovy.testCompletionNoDot2_3.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionNoDot2/CompletionNoDot2.groovy.testCompletionNoDot2_3.completion
new file mode 100644
index 0000000..6a3a3b5
--- /dev/null
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionNoDot2/CompletionNoDot2.groovy.testCompletionNoDot2_3.completion
@@ -0,0 +1,8 @@
+Code completion result for source line:
+return cas|e1()
+(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true)
+------------------------------------
+METHOD case1() [PRIVATE] String
+METHOD case2() [PRIVATE] String
+METHOD case3() [PRIVATE] String
+METHOD case4() [PRIVATE] void
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionNoDot2/CompletionNoDot2.groovy.testCompletionNoDot2_4.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionNoDot2/CompletionNoDot2.groovy.testCompletionNoDot2_4.completion
new file mode 100644
index 0000000..73a342b
--- /dev/null
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionNoDot2/CompletionNoDot2.groovy.testCompletionNoDot2_4.completion
@@ -0,0 +1,9 @@
+Code completion result for source line:
+return case2() + cas|e1();
+(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true)
+------------------------------------
+METHOD case1() [PRIVATE] String
+METHOD case2() [PRIVATE] String
+METHOD case3() [PRIVATE] String
+METHOD case4() [PRIVATE] void
+KEYWORD case null
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionNoDot2/CompletionNoDot2.groovy.testCompletionNoDot2_5.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionNoDot2/CompletionNoDot2.groovy.testCompletionNoDot2_5.completion
new file mode 100644
index 0000000..7135a07
--- /dev/null
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionNoDot2/CompletionNoDot2.groovy.testCompletionNoDot2_5.completion
@@ -0,0 +1,9 @@
+Code completion result for source line:
+if(cas|e1()) {
+(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true)
+------------------------------------
+METHOD case1() [PRIVATE] String
+METHOD case2() [PRIVATE] String
+METHOD case3() [PRIVATE] String
+METHOD case4() [PRIVATE] void
+KEYWORD case null
diff --git a/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionNoDot2/CompletionNoDot2.groovy.testCompletionNoDot2_6.completion b/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionNoDot2/CompletionNoDot2.groovy.testCompletionNoDot2_6.completion
new file mode 100644
index 0000000..e25e64d
--- /dev/null
+++ b/groovy/groovy.editor/test/unit/data/testfiles/completion/method/completionNoDot2/CompletionNoDot2.groovy.testCompletionNoDot2_6.completion
@@ -0,0 +1,9 @@
+Code completion result for source line:
+cas|e3();
+(QueryType=COMPLETION, prefixSearch=true, caseSensitive=true)
+------------------------------------
+METHOD case1() [PRIVATE] String
+METHOD case2() [PRIVATE] String
+METHOD case3() [PRIVATE] String
+METHOD case4() [PRIVATE] void
+KEYWORD case null
diff --git a/groovy/groovy.editor/test/unit/src/org/netbeans/modules/groovy/editor/api/completion/MethodCCTest.java b/groovy/groovy.editor/test/unit/src/org/netbeans/modules/groovy/editor/api/completion/MethodCCTest.java
index 12a64ea..56e1a0f 100644
--- a/groovy/groovy.editor/test/unit/src/org/netbeans/modules/groovy/editor/api/completion/MethodCCTest.java
+++ b/groovy/groovy.editor/test/unit/src/org/netbeans/modules/groovy/editor/api/completion/MethodCCTest.java
@@ -141,6 +141,31 @@ public class MethodCCTest extends GroovyCCTestBase {
public void testCompletionNoDot1_3() throws Exception {
checkCompletion(BASE + "CompletionNoDot1.groovy", " n^", false);
}
+
+ public void testCompletionNoDot2_1() throws Exception {
+ checkCompletion(BASE + "CompletionNoDot2.groovy", "String a = meth^", false);
+ }
+
+ public void testCompletionNoDot2_2() throws Exception {
+ checkCompletion(BASE + "CompletionNoDot2.groovy", "String a = this.meth^od1()", false);
+ }
+
+ public void testCompletionNoDot2_3() throws Exception {
+ checkCompletion(BASE + "CompletionNoDot2.groovy", " return cas^e1()", false);
+ }
+
+ public void testCompletionNoDot2_4() throws Exception {
+ checkCompletion(BASE + "CompletionNoDot2.groovy", "return case2() + cas^e1();", false);
+ }
+
+ public void testCompletionNoDot2_5() throws Exception {
+ checkCompletion(BASE + "CompletionNoDot2.groovy", "if(cas^e1()) {", false);
+ }
+
+ public void testCompletionNoDot2_6() throws Exception {
+ checkCompletion(BASE + "CompletionNoDot2.groovy", "cas^e3();", false);
+ }
+
public void testCompletionNoPrefixString1() throws Exception {
checkCompletion(BASE + "CompletionNoPrefixString1.groovy", "println \"Hello $name!\".^", false);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists