langtools/src/share/classes/com/sun/tools/javac/comp/Enter.java
changeset 8242 3873b4aaf4a8
parent 7681 1f0819a3341f
child 9087 e9e44877cd18
equal deleted inserted replaced
8241:4161b56e0d20 8242:3873b4aaf4a8
    93     protected static final Context.Key<Enter> enterKey =
    93     protected static final Context.Key<Enter> enterKey =
    94         new Context.Key<Enter>();
    94         new Context.Key<Enter>();
    95 
    95 
    96     Log log;
    96     Log log;
    97     Symtab syms;
    97     Symtab syms;
    98     Scope.ScopeCounter scopeCounter;
       
    99     Check chk;
    98     Check chk;
   100     TreeMaker make;
    99     TreeMaker make;
   101     ClassReader reader;
   100     ClassReader reader;
   102     Annotate annotate;
   101     Annotate annotate;
   103     MemberEnter memberEnter;
   102     MemberEnter memberEnter;
   121 
   120 
   122         log = Log.instance(context);
   121         log = Log.instance(context);
   123         reader = ClassReader.instance(context);
   122         reader = ClassReader.instance(context);
   124         make = TreeMaker.instance(context);
   123         make = TreeMaker.instance(context);
   125         syms = Symtab.instance(context);
   124         syms = Symtab.instance(context);
   126         scopeCounter = Scope.ScopeCounter.instance(context);
       
   127         chk = Check.instance(context);
   125         chk = Check.instance(context);
   128         memberEnter = MemberEnter.instance(context);
   126         memberEnter = MemberEnter.instance(context);
   129         types = Types.instance(context);
   127         types = Types.instance(context);
   130         annotate = Annotate.instance(context);
   128         annotate = Annotate.instance(context);
   131         lint = Lint.instance(context);
   129         lint = Lint.instance(context);
   190      *  @param tree     The class definition.
   188      *  @param tree     The class definition.
   191      *  @param env      The environment current outside of the class definition.
   189      *  @param env      The environment current outside of the class definition.
   192      */
   190      */
   193     public Env<AttrContext> classEnv(JCClassDecl tree, Env<AttrContext> env) {
   191     public Env<AttrContext> classEnv(JCClassDecl tree, Env<AttrContext> env) {
   194         Env<AttrContext> localEnv =
   192         Env<AttrContext> localEnv =
   195             env.dup(tree, env.info.dup(new Scope.ClassScope(tree.sym, scopeCounter)));
   193             env.dup(tree, env.info.dup(new Scope(tree.sym)));
   196         localEnv.enclClass = tree;
   194         localEnv.enclClass = tree;
   197         localEnv.outer = env;
   195         localEnv.outer = env;
   198         localEnv.info.isSelfCall = false;
   196         localEnv.info.isSelfCall = false;
   199         localEnv.info.lint = null; // leave this to be filled in by Attr,
   197         localEnv.info.lint = null; // leave this to be filled in by Attr,
   200                                    // when annotations have been processed
   198                                    // when annotations have been processed
   326             Name name = names.package_info;
   324             Name name = names.package_info;
   327             ClassSymbol c = reader.enterClass(name, tree.packge);
   325             ClassSymbol c = reader.enterClass(name, tree.packge);
   328             c.flatname = names.fromString(tree.packge + "." + name);
   326             c.flatname = names.fromString(tree.packge + "." + name);
   329             c.sourcefile = tree.sourcefile;
   327             c.sourcefile = tree.sourcefile;
   330             c.completer = null;
   328             c.completer = null;
   331             c.members_field = new Scope.ClassScope(c, scopeCounter);
   329             c.members_field = new Scope(c);
   332             tree.packge.package_info = c;
   330             tree.packge.package_info = c;
   333         }
   331         }
   334         classEnter(tree.defs, topEnv);
   332         classEnter(tree.defs, topEnv);
   335         if (addEnv) {
   333         if (addEnv) {
   336             todo.append(topEnv);
   334             todo.append(topEnv);
   394 
   392 
   395         // Fill out class fields.
   393         // Fill out class fields.
   396         c.completer = memberEnter;
   394         c.completer = memberEnter;
   397         c.flags_field = chk.checkFlags(tree.pos(), tree.mods.flags, c, tree);
   395         c.flags_field = chk.checkFlags(tree.pos(), tree.mods.flags, c, tree);
   398         c.sourcefile = env.toplevel.sourcefile;
   396         c.sourcefile = env.toplevel.sourcefile;
   399         c.members_field = new Scope.ClassScope(c, scopeCounter);
   397         c.members_field = new Scope(c);
   400 
   398 
   401         ClassType ct = (ClassType)c.type;
   399         ClassType ct = (ClassType)c.type;
   402         if (owner.kind != PCK && (c.flags_field & STATIC) == 0) {
   400         if (owner.kind != PCK && (c.flags_field & STATIC) == 0) {
   403             // We are seeing a local or inner class.
   401             // We are seeing a local or inner class.
   404             // Set outer_field of this class to closest enclosing class
   402             // Set outer_field of this class to closest enclosing class