< prev index next >

src/jdk.compiler/share/classes/com/sun/tools/javac/comp/MemberEnter.java

Print this page
*** 30,11 ***
  
  import com.sun.tools.javac.code.*;
  import com.sun.tools.javac.code.Scope.WriteableScope;
  import com.sun.tools.javac.tree.*;
  import com.sun.tools.javac.util.*;
- import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
  import com.sun.tools.javac.util.JCDiagnostic.Error;
  import com.sun.tools.javac.code.Source.Feature;
  
  import com.sun.tools.javac.code.Symbol.*;
  import com.sun.tools.javac.code.Type.*;
--- 30,10 ---

*** 64,10 ***
--- 63,12 ---
      private final Attr attr;
      private final Symtab syms;
      private final Annotate annotate;
      private final Types types;
      private final Names names;
+     private final Preview preview;
+     private final boolean allowValueClasses;
  
      public static MemberEnter instance(Context context) {
          MemberEnter instance = context.get(memberEnterKey);
          if (instance == null)
              instance = new MemberEnter(context);

*** 84,10 ***
--- 85,12 ---
          syms = Symtab.instance(context);
          annotate = Annotate.instance(context);
          types = Types.instance(context);
          source = Source.instance(context);
          names = Names.instance(context);
+         preview = Preview.instance(context);
+         allowValueClasses = preview.isEnabled() && Feature.VALUE_CLASSES.allowedInSource(source);
      }
  
      /** Construct method type from method signature.
       *  @param typarams    The method's type parameters.
       *  @param params      The method's value parameters.

*** 291,10 ***
--- 294,14 ---
              v.flags_field |= HASINIT;
              if ((v.flags_field & FINAL) != 0 &&
                  needsLazyConstValue(tree.init)) {
                  Env<AttrContext> initEnv = getInitEnv(tree, env);
                  initEnv.info.enclVar = v;
+                 initEnv = initEnv(tree, initEnv);
+                 if (v.isStrictInstance() && allowValueClasses) {
+                     initEnv.info.earlyContext = EarlyConstructionContext.of((ClassSymbol)v.owner, false);
+                 }
                  v.setLazyConstValue(initEnv(tree, initEnv), env, attr, tree);
              }
          }
  
          if(!(Feature.UNNAMED_VARIABLES.allowedInSource(source) && tree.sym.isUnnamedVariable())) {
< prev index next >