RFR: 8302344: Compiler Implementation for Unnamed patterns and variables (Preview) [v16]

Aggelos Biboudis abimpoudis at openjdk.org
Mon May 8 10:17:35 UTC 2023


On Sat, 6 May 2023 21:23:32 GMT, Aggelos Biboudis <abimpoudis at openjdk.org> wrote:

>> This PR implements [JEP 443](https://openjdk.org/jeps/443), the preview feature for Unnamed Patterns and Variables in Java.
>> 
>> Draft Spec: https://cr.openjdk.org/~abimpoudis/unnamed/latest/
>
> Aggelos Biboudis has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Remove @Override from VarSymbol.isUnnamed

BTW we can remove the `isUnnamed` from `VarSymbol` as @jddarcy pointed me out correctly. 

By keeping it we avoid sprinkling 5 core places with `@SuppressWarnings("preview")`. However, I think it will be cleaner without that override, despite the annotation and I would be in favor of that. Are there any concerns? e.g.,


diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symbol.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symbol.java
index 631b0ce61ac..dc84c89f88e 100644
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symbol.java
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symbol.java
@@ -1784,11 +1784,6 @@ public abstract class Symbol extends AnnoConstruct implements PoolConstant, Elem
         public <R, P> R accept(Symbol.Visitor<R, P> v, P p) {
             return v.visitVarSymbol(this, p);
         }
-
-        @DefinedBy(Api.LANGUAGE_MODEL)
-        public boolean isUnnamed() {
-            return name.isEmpty();
-        }
     }
 
     public static class RecordComponent extends VarSymbol implements RecordComponentElement {
diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java
index 986f2e9fe89..26ef1c41156 100644
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java
@@ -93,6 +93,7 @@ import com.sun.tools.javac.util.JCDiagnostic.DiagnosticFlag;
  *  This code and its internal interfaces are subject to change or
  *  deletion without notice.</b>
  */
+ at SuppressWarnings("preview")
 public class Attr extends JCTree.Visitor {
     protected static final Context.Key<Attr> attrKey = new Context.Key<>();
 
diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java
index 725a8a5e37d..537635a9490 100644
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java
@@ -93,6 +93,7 @@ import javax.lang.model.util.ElementKindVisitor14;
  *  This code and its internal interfaces are subject to change or
  *  deletion without notice.</b>
  */
+ at SuppressWarnings("preview")
 public class Check {
     protected static final Context.Key<Check> checkKey = new Context.Key<>();
 
diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java
index 452a823a46e..997ae7e3d81 100644
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java
@@ -203,6 +203,7 @@ import static java.util.stream.Collectors.groupingBy;
  *  This code and its internal interfaces are subject to change or
  *  deletion without notice.</b>
  */
+ at SuppressWarnings("preview")
 public class Flow {
     protected static final Context.Key<Flow> flowKey = new Context.Key<>();
 
diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/MemberEnter.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/MemberEnter.java
index 13a4dd6c2cd..220aaf220d0 100644
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/MemberEnter.java
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/MemberEnter.java
@@ -53,6 +53,7 @@ import static com.sun.tools.javac.code.TypeTag.TYPEVAR;
  *  This code and its internal interfaces are subject to change or
  *  deletion without notice.</b>
  */
+ at SuppressWarnings("preview")
 public class MemberEnter extends JCTree.Visitor {
     protected static final Context.Key<MemberEnter> memberEnterKey = new Context.Key<>();
 
diff --git a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransPatterns.java b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransPatterns.java
index 44ea3f904bd..cdf7d18b599 100644
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransPatterns.java
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransPatterns.java
@@ -113,6 +113,7 @@ import com.sun.tools.javac.util.List;
 /**
  * This pass translates pattern-matching constructs, such as instanceof <pattern>.
  */
+ at SuppressWarnings("preview")
 public class TransPatterns extends TreeTranslator {
 
     protected static final Context.Key<TransPatterns> transPatternsKey = new Context.Key<>();

-------------

PR Comment: https://git.openjdk.org/jdk/pull/13528#issuecomment-1538121683


More information about the kulla-dev mailing list