You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by sk...@apache.org on 2020/02/03 12:14:25 UTC

[netbeans] branch master updated: [NETBEANS-3702] : Fixed hint 'implements all abstract method' for record interfaces

This is an automated email from the ASF dual-hosted git repository.

skygo 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 9eb4cc8  [NETBEANS-3702] : Fixed hint 'implements all abstract method' for record interfaces
     new daea256  Merge pull request #1907 from singh-akhilesh/fixed-hint-for-record
9eb4cc8 is described below

commit 9eb4cc8799abc8fca5d52f47159e812695367e40
Author: Akhilesh Singh <ak...@oracle.com>
AuthorDate: Fri Jan 31 17:45:25 2020 +0530

    [NETBEANS-3702] : Fixed hint 'implements all abstract method' for record interfaces
---
 .../java/hints/errors/ImplementAllAbstractMethods.java        | 11 +++--------
 .../src/org/netbeans/modules/java/source/save/CasualDiff.java |  7 ++++++-
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/java/java.hints/src/org/netbeans/modules/java/hints/errors/ImplementAllAbstractMethods.java b/java/java.hints/src/org/netbeans/modules/java/hints/errors/ImplementAllAbstractMethods.java
index 1b5404e..7699146 100644
--- a/java/java.hints/src/org/netbeans/modules/java/hints/errors/ImplementAllAbstractMethods.java
+++ b/java/java.hints/src/org/netbeans/modules/java/hints/errors/ImplementAllAbstractMethods.java
@@ -81,7 +81,7 @@ import org.openide.util.NbBundle;
 public final class ImplementAllAbstractMethods implements ErrorRule<Object>, OverrideErrorMessage<Object> {
 
     private static final String PREMATURE_EOF_CODE = "compiler.err.premature.eof"; // NOI18N
-    
+    private static final String RECORD = "RECORD"; // NOI18N
     /** Creates a new instance of ImplementAllAbstractMethodsCreator */
     public ImplementAllAbstractMethods() {
     }
@@ -169,11 +169,6 @@ public final class ImplementAllAbstractMethods implements ErrorRule<Object>, Ove
         }
         Element e = info.getTrees().getElement(path);
         final Tree leaf = path.getLeaf();
-        //TODO: Fix defect #NETBEANS-3702
-        //Disabling hints for record
-        if(leaf.getKind().toString().equals(TreeShims.RECORD)){
-            return null;
-        }
         boolean isUsableElement = e != null && (e.getKind().isClass() || e.getKind().isInterface());
         boolean containsDefaultMethod = saved == Boolean.FALSE;
 
@@ -185,7 +180,7 @@ public final class ImplementAllAbstractMethods implements ErrorRule<Object>, Ove
             return null;
         }
         List<Fix> fixes = new ArrayList<>();
-        if (TreeUtilities.CLASS_TREE_KINDS.contains(leaf.getKind())) {
+        if (TreeUtilities.CLASS_TREE_KINDS.contains(leaf.getKind()) || leaf.getKind().toString().equals(RECORD)) {
             CompilationUnitTree cut = info.getCompilationUnit();
             // do not offer for class declarations without body
             long start = info.getTrees().getSourcePositions().getStartPosition(cut, leaf);
@@ -565,7 +560,7 @@ public final class ImplementAllAbstractMethods implements ErrorRule<Object>, Ove
     // copy from GeneratorUtils, need to change the processing a little.
     public static Map<? extends ExecutableElement, ? extends ExecutableElement> generateAllAbstractMethodImplementations(
             WorkingCopy wc, TreePath path, List<ElementHandle<? extends Element>> toImplementHandles) {
-        assert TreeUtilities.CLASS_TREE_KINDS.contains(path.getLeaf().getKind());
+        assert TreeUtilities.CLASS_TREE_KINDS.contains(path.getLeaf().getKind()) || path.getLeaf().getKind().toString().equals(RECORD);
         TypeElement te = (TypeElement)wc.getTrees().getElement(path);
         if (te == null) {
             return null;
diff --git a/java/java.source.base/src/org/netbeans/modules/java/source/save/CasualDiff.java b/java/java.source.base/src/org/netbeans/modules/java/source/save/CasualDiff.java
index b55ceb6..90b8f0a 100644
--- a/java/java.source.base/src/org/netbeans/modules/java/source/save/CasualDiff.java
+++ b/java/java.source.base/src/org/netbeans/modules/java/source/save/CasualDiff.java
@@ -187,6 +187,7 @@ public class CasualDiff {
     private final Context context;
     private final Names names;
     private static final Logger LOG = Logger.getLogger(CasualDiff.class.getName());
+    public static final int GENERATED_MEMBER = 1<<24;
 
     private Map<Integer, String> diffInfo = new HashMap<>();
     private final Map<Tree, ?> tree2Tag;
@@ -3913,7 +3914,11 @@ public class CasualDiff {
                     // collect enum constants, make a field group from them
                     // and set the flag.
                     enumConstants.add(var);
-                } else {
+                } // filter syntetic member variable, i.e. variable which are in
+                // the tree, but not available in the source.
+                else if ((var.mods.flags & GENERATED_MEMBER) != 0)
+                    continue;
+                else {
                     if (!fieldGroup.isEmpty()) {
                         int oldPos = getOldPos(fieldGroup.get(0));
 


---------------------------------------------------------------------
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