langtools/src/share/classes/com/sun/tools/javac/comp/MemberEnter.java
changeset 10950 e87b50888909
parent 9082 53409a3a93f8
child 11709 0d56d3fc22e6
equal deleted inserted replaced
10949:42f7cc0468dd 10950:e87b50888909
    38 import com.sun.tools.javac.code.Type.*;
    38 import com.sun.tools.javac.code.Type.*;
    39 import com.sun.tools.javac.code.Symbol.*;
    39 import com.sun.tools.javac.code.Symbol.*;
    40 import com.sun.tools.javac.tree.JCTree.*;
    40 import com.sun.tools.javac.tree.JCTree.*;
    41 
    41 
    42 import static com.sun.tools.javac.code.Flags.*;
    42 import static com.sun.tools.javac.code.Flags.*;
       
    43 import static com.sun.tools.javac.code.Flags.ANNOTATION;
    43 import static com.sun.tools.javac.code.Kinds.*;
    44 import static com.sun.tools.javac.code.Kinds.*;
    44 import static com.sun.tools.javac.code.TypeTags.*;
    45 import static com.sun.tools.javac.code.TypeTags.*;
       
    46 import static com.sun.tools.javac.tree.JCTree.Tag.*;
    45 import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
    47 import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
    46 
    48 
    47 /** This is the second phase of Enter, in which classes are completed
    49 /** This is the second phase of Enter, in which classes are completed
    48  *  by entering their members into the class scope using
    50  *  by entering their members into the class scope using
    49  *  MemberEnter.complete().  See Enter for an overview.
    51  *  MemberEnter.complete().  See Enter for an overview.
   642             new VarSymbol(0, tree.name, tree.vartype.type, enclScope.owner);
   644             new VarSymbol(0, tree.name, tree.vartype.type, enclScope.owner);
   643         v.flags_field = chk.checkFlags(tree.pos(), tree.mods.flags, v, tree);
   645         v.flags_field = chk.checkFlags(tree.pos(), tree.mods.flags, v, tree);
   644         tree.sym = v;
   646         tree.sym = v;
   645         if (tree.init != null) {
   647         if (tree.init != null) {
   646             v.flags_field |= HASINIT;
   648             v.flags_field |= HASINIT;
   647             if ((v.flags_field & FINAL) != 0 && tree.init.getTag() != JCTree.NEWCLASS) {
   649             if ((v.flags_field & FINAL) != 0 && !tree.init.hasTag(NEWCLASS)) {
   648                 Env<AttrContext> initEnv = getInitEnv(tree, env);
   650                 Env<AttrContext> initEnv = getInitEnv(tree, env);
   649                 initEnv.info.enclVar = v;
   651                 initEnv.info.enclVar = v;
   650                 v.setLazyConstValue(initEnv(tree, initEnv), attr, tree.init);
   652                 v.setLazyConstValue(initEnv(tree, initEnv), attr, tree.init);
   651             }
   653             }
   652         }
   654         }
   866             c.flags_field |= UNATTRIBUTED;
   868             c.flags_field |= UNATTRIBUTED;
   867 
   869 
   868             // If this is a toplevel-class, make sure any preceding import
   870             // If this is a toplevel-class, make sure any preceding import
   869             // clauses have been seen.
   871             // clauses have been seen.
   870             if (c.owner.kind == PCK) {
   872             if (c.owner.kind == PCK) {
   871                 memberEnter(env.toplevel, env.enclosing(JCTree.TOPLEVEL));
   873                 memberEnter(env.toplevel, env.enclosing(TOPLEVEL));
   872                 todo.append(env);
   874                 todo.append(env);
   873             }
   875             }
   874 
   876 
   875             if (c.owner.kind == TYP)
   877             if (c.owner.kind == TYP)
   876                 c.owner.complete();
   878                 c.owner.complete();