equal
deleted
inserted
replaced
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(); |