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