Ignore generated constructors while searching for declarations, use correct name span to detect declarations.
authorJan Lahoda <jlahoda@netbeans.org>
Sun, 02 Dec 2012 23:04:01 +0100
changeset 9124907f3e21a9c
parent 911 779002b0d3d0
child 913 9328dc780b53
Ignore generated constructors while searching for declarations, use correct name span to detect declarations.
remoting/server/web/resolve.web.api/src/org/netbeans/modules/jackpot30/resolve/api/ResolveService.java
remoting/server/web/web.ui/src/org/netbeans/modules/jackpot30/backend/ui/UI.java
     1.1 --- a/remoting/server/web/resolve.web.api/src/org/netbeans/modules/jackpot30/resolve/api/ResolveService.java	Sun Dec 02 22:31:11 2012 +0100
     1.2 +++ b/remoting/server/web/resolve.web.api/src/org/netbeans/modules/jackpot30/resolve/api/ResolveService.java	Sun Dec 02 23:04:01 2012 +0100
     1.3 @@ -49,7 +49,9 @@
     1.4  import com.sun.source.tree.VariableTree;
     1.5  import com.sun.source.util.TreePath;
     1.6  import com.sun.source.util.TreePathScanner;
     1.7 +import com.sun.tools.javac.code.Flags;
     1.8  import com.sun.tools.javac.tree.JCTree;
     1.9 +import com.sun.tools.javac.tree.JCTree.JCMethodDecl;
    1.10  import java.io.IOException;
    1.11  import java.io.InputStream;
    1.12  import java.util.ArrayList;
    1.13 @@ -183,7 +185,13 @@
    1.14              case MEMBER_SELECT: name = ((MemberSelectTree) forTree.getLeaf()).getIdentifier(); break;
    1.15              case ANNOTATION_TYPE: case CLASS:
    1.16              case ENUM: case INTERFACE: name = ((ClassTree) forTree.getLeaf()).getSimpleName(); break;
    1.17 -            case METHOD: name = ((MethodTree) forTree.getLeaf()).getName(); break;
    1.18 +            case METHOD:
    1.19 +                if ((((JCMethodDecl) forTree.getLeaf()).getModifiers().flags & Flags.GENERATEDCONSTR) != 0) {
    1.20 +                    //no positions for generated constructors:
    1.21 +                    return new long[] {-1, -1, -1, -1};
    1.22 +                }
    1.23 +                name = ((MethodTree) forTree.getLeaf()).getName();
    1.24 +                break;
    1.25              case VARIABLE: name = ((VariableTree) forTree.getLeaf()).getName(); break;
    1.26          }
    1.27  
     2.1 --- a/remoting/server/web/web.ui/src/org/netbeans/modules/jackpot30/backend/ui/UI.java	Sun Dec 02 22:31:11 2012 +0100
     2.2 +++ b/remoting/server/web/web.ui/src/org/netbeans/modules/jackpot30/backend/ui/UI.java	Sun Dec 02 23:04:01 2012 +0100
     2.3 @@ -49,6 +49,8 @@
     2.4  import com.sun.source.tree.VariableTree;
     2.5  import com.sun.source.util.TreePath;
     2.6  import com.sun.source.util.TreePathScanner;
     2.7 +import com.sun.tools.javac.code.Flags;
     2.8 +import com.sun.tools.javac.tree.JCTree.JCMethodDecl;
     2.9  import freemarker.template.TemplateException;
    2.10  import java.io.IOException;
    2.11  import java.net.URI;
    2.12 @@ -698,7 +700,7 @@
    2.13  
    2.14                  long[] span = ResolveService.nameSpan(info, getCurrentPath());
    2.15  
    2.16 -                if (span[0] <= position && position <= span[1]) {
    2.17 +                if (span[2] <= position && position <= span[3]) {
    2.18                      if (JavaUtils.SUPPORTED_KINDS.contains(el.getKind())) {
    2.19                          signature[0] = JavaUtils.serialize(ElementHandle.create(el));
    2.20                      }