This is an automated email from the ASF dual-hosted git repository. jlahoda pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-netbeans.git
The following commit(s) were added to refs/heads/master by this push: new a1f54cf [NETBEANS-774] Disable var hint for anonymous type a1f54cf is described below commit a1f54cf2765599ff5593615885ab5061bbfa2082 Author: Reema Taneja <32299405+rtane...@users.noreply.github.com> AuthorDate: Fri Jun 8 01:56:07 2018 -0700 [NETBEANS-774] Disable var hint for anonymous type --- .../ConvertInvalidVarToExplicitArrayType.java | 4 ++-- .../modules/java/hints/errors/Utilities.java | 12 ++++++++++++ .../java/hints/jdk/ConvertVarToExplicitType.java | 20 ++++++++++++-------- .../ConvertInvalidVarToExplicitArrayTypeTest.java | 6 ++++++ .../hints/jdk/ConvertVarToExplicitTypeTest.java | 21 +++++++++++++++++++-- 5 files changed, 51 insertions(+), 12 deletions(-) diff --git a/java.hints/src/org/netbeans/modules/java/hints/errors/ConvertInvalidVarToExplicitArrayType.java b/java.hints/src/org/netbeans/modules/java/hints/errors/ConvertInvalidVarToExplicitArrayType.java index 428cb05..9568817 100644 --- a/java.hints/src/org/netbeans/modules/java/hints/errors/ConvertInvalidVarToExplicitArrayType.java +++ b/java.hints/src/org/netbeans/modules/java/hints/errors/ConvertInvalidVarToExplicitArrayType.java @@ -96,9 +96,9 @@ public class ConvertInvalidVarToExplicitArrayType implements ErrorRule<Void> { TypeMirror etType = trees.getTypeMirror(new TreePath(initArrayTreePath, tree)); - //skipped fix for invalid array member and for parameterized array member. + //skipped fix for invalid array member, anonymous class and parameterized array member. if (etType == null || etType.getKind() == TypeKind.ERROR || (etType.getKind() == TypeKind.DECLARED - && !((DeclaredType) etType).getTypeArguments().isEmpty())) { + && !((DeclaredType) etType).getTypeArguments().isEmpty()) || Utilities.isAnonymousType(etType)) { return null; } diff --git a/java.hints/src/org/netbeans/modules/java/hints/errors/Utilities.java b/java.hints/src/org/netbeans/modules/java/hints/errors/Utilities.java index 4fb6e5f..414fa5f 100644 --- a/java.hints/src/org/netbeans/modules/java/hints/errors/Utilities.java +++ b/java.hints/src/org/netbeans/modules/java/hints/errors/Utilities.java @@ -138,6 +138,7 @@ import com.sun.tools.javac.util.JCDiagnostic; import com.sun.tools.javac.util.Log; import java.net.URI; import java.util.concurrent.Callable; +import javax.lang.model.element.NestingKind; import javax.lang.model.type.ErrorType; import javax.lang.model.type.UnionType; import javax.tools.Diagnostic; @@ -2995,4 +2996,15 @@ public class Utilities { public static boolean isModular(CompilationInfo info) { return getModuleInfo(info) != null; } + + public static boolean isAnonymousType(TypeMirror type) { + if (type.getKind() == TypeKind.DECLARED) { + DeclaredType dt = (DeclaredType) type; + TypeElement typeElem = (TypeElement) dt.asElement(); + if (typeElem.getNestingKind() == NestingKind.ANONYMOUS) { + return true; + } + } + return false; + } } diff --git a/java.hints/src/org/netbeans/modules/java/hints/jdk/ConvertVarToExplicitType.java b/java.hints/src/org/netbeans/modules/java/hints/jdk/ConvertVarToExplicitType.java index 9a09945..db826e7 100644 --- a/java.hints/src/org/netbeans/modules/java/hints/jdk/ConvertVarToExplicitType.java +++ b/java.hints/src/org/netbeans/modules/java/hints/jdk/ConvertVarToExplicitType.java @@ -19,12 +19,12 @@ package org.netbeans.modules.java.hints.jdk; import com.sun.source.tree.CompilationUnitTree; -import com.sun.source.tree.NewClassTree; import com.sun.source.tree.Tree; import com.sun.source.tree.VariableTree; import com.sun.source.util.TreePath; import javax.lang.model.SourceVersion; import javax.lang.model.element.ElementKind; +import javax.lang.model.type.DeclaredType; import javax.lang.model.type.TypeKind; import javax.lang.model.type.TypeMirror; import javax.tools.Diagnostic; @@ -151,17 +151,21 @@ public class ConvertVarToExplicitType { //filter anonymous class and intersection types private static boolean isValidType(HintContext ctx) { TreePath treePath = ctx.getPath(); - TreePath initTreePath = ctx.getVariables().get("$init"); //NOI18N + TypeMirror variableTypeMirror = ctx.getInfo().getTrees().getElement(treePath).asType(); - if (initTreePath.getLeaf().getKind() == Tree.Kind.NEW_CLASS) { - NewClassTree nct = ((NewClassTree) initTreePath.getLeaf()); - if (nct.getClassBody() != null) { - return false; + if (Utilities.isAnonymousType(variableTypeMirror)) { + return false; + } else if (variableTypeMirror.getKind() == TypeKind.DECLARED) { + DeclaredType dt = (DeclaredType) variableTypeMirror; + if (dt.getTypeArguments().size() > 0) { + for (TypeMirror paramType : dt.getTypeArguments()) { + if (Utilities.isAnonymousType(paramType)) { + return false; + } + } } } - TypeMirror variableTypeMirror = ctx.getInfo().getTrees().getElement(treePath).asType(); - if (!Utilities.isValidType(variableTypeMirror) ||(variableTypeMirror.getKind() == TypeKind.INTERSECTION)) { return false; } diff --git a/java.hints/test/unit/src/org/netbeans/modules/java/hints/errors/ConvertInvalidVarToExplicitArrayTypeTest.java b/java.hints/test/unit/src/org/netbeans/modules/java/hints/errors/ConvertInvalidVarToExplicitArrayTypeTest.java index a36d16f..a5d79cb 100644 --- a/java.hints/test/unit/src/org/netbeans/modules/java/hints/errors/ConvertInvalidVarToExplicitArrayTypeTest.java +++ b/java.hints/test/unit/src/org/netbeans/modules/java/hints/errors/ConvertInvalidVarToExplicitArrayTypeTest.java @@ -63,6 +63,12 @@ public class ConvertInvalidVarToExplicitArrayTypeTest extends ErrorHintsTestBase "package test; public class Test {{final var j = {int1,var1,\"hello\"};}}", -1); } + + public void testAnonymousClassTypeArray() throws Exception { + performAnalysisTest("test/Test.java", + "package test; public class Test {{var j = {new Object(){}};}}", + -1); + } public void testParameterizedElements() throws Exception { performAnalysisTest("test/Test.java", diff --git a/java.hints/test/unit/src/org/netbeans/modules/java/hints/jdk/ConvertVarToExplicitTypeTest.java b/java.hints/test/unit/src/org/netbeans/modules/java/hints/jdk/ConvertVarToExplicitTypeTest.java index 3942ee7..69bbe47 100644 --- a/java.hints/test/unit/src/org/netbeans/modules/java/hints/jdk/ConvertVarToExplicitTypeTest.java +++ b/java.hints/test/unit/src/org/netbeans/modules/java/hints/jdk/ConvertVarToExplicitTypeTest.java @@ -350,6 +350,23 @@ public class ConvertVarToExplicitTypeTest { + " }\n" + " <Z> List<Z> listOf(Z z) { return null; }\n" + "}"); - } - + } + + @Test + public void testNoVarHintForAnonymousType() throws Exception { + HintTest.create() + .input("package test;\n" + + "public class Test {\n" + + "void v() {\n" + + " var v = get(new Object(){});\n" + + "}\n" + + "\n" + + "<Z> Z get(Z z) {\n" + + " return z; \n" + + "}" + + "}") + .sourceLevel("1.10") + .run(ConvertVarToExplicitType.class) + .assertNotContainsWarnings(VAR_CONV_WARNING); + } } -- To stop receiving notification emails like this one, please contact jlah...@apache.org. --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@netbeans.apache.org For additional commands, e-mail: commits-h...@netbeans.apache.org For further information about the NetBeans mailing lists, visit: https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists