RFR: 8302344: Compiler Implementation for Unnamed patterns and variables (Preview) [v16]
Maurizio Cimadamore
mcimadamore at openjdk.org
Mon May 8 12:15:36 UTC 2023
On Mon, 8 May 2023 10:13:24 GMT, Aggelos Biboudis <abimpoudis at openjdk.org> wrote:
> 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<>();
> ```
One thing we did in other places was to have a private equivalent of some public API method, so that we can call it internally from the compiler, w/o too much hassle (the internal version doesn't need to be marked as preview).
-------------
PR Comment: https://git.openjdk.org/jdk/pull/13528#issuecomment-1538257990
More information about the compiler-dev
mailing list