< prev index next > src/jdk.compiler/share/classes/com/sun/tools/javac/comp/MemberEnter.java
Print this page
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.*;
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);
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.
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 >