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