/** Duplicate this context, copying all fields. */ AttrContext dup() { return dup(scope); }
/** Duplicate this context, copying all fields. */ AttrContext dup() { return dup(scope); }
/** Duplicate this context, copying all fields. */ AttrContext dup() { return dup(scope); }
/** Duplicate this context, copying all fields. */ AttrContext dup() { return dup(scope); }
public Type attribType(JCTree node, TypeSymbol sym) { Env<AttrContext> env = enter.typeEnvs.get(sym); Env<AttrContext> localEnv = env.dup(node, env.info.dup()); return attribTree(node, localEnv, Kinds.TYP, Type.noType); }
public Type attribType(JCTree node, TypeSymbol sym) { Env<AttrContext> env = enter.typeEnvs.get(sym); Env<AttrContext> localEnv = env.dup(node, env.info.dup()); return attribTree(node, localEnv, Kinds.TYP, Type.noType); }
public Type attribType(JCTree node, TypeSymbol sym) { Env<AttrContext> env = enter.typeEnvs.get(sym); Env<AttrContext> localEnv = env.dup(node, env.info.dup()); return attribTree(node, localEnv, unknownTypeInfo); }
/** Create a fresh environment for method bodies. * @param tree The method definition. * @param env The environment current outside of the method definition. */ Env<AttrContext> methodEnv(JCMethodDecl tree, Env<AttrContext> env) { Env<AttrContext> localEnv = env.dup(tree, env.info.dup(env.info.scope.dupUnshared())); localEnv.enclMethod = tree; localEnv.info.scope.owner = tree.sym; if ((tree.mods.flags & STATIC) != 0) localEnv.info.staticLevel++; return localEnv; }
/** Create a fresh environment for method bodies. * @param tree The method definition. * @param env The environment current outside of the method definition. */ Env<AttrContext> methodEnv(JCMethodDecl tree, Env<AttrContext> env) { Env<AttrContext> localEnv = env.dup(tree, env.info.dup(env.info.scope.dupUnshared())); localEnv.enclMethod = tree; localEnv.info.scope.owner = tree.sym; if ((tree.mods.flags & STATIC) != 0) localEnv.info.staticLevel++; return localEnv; }
Env<AttrContext> copyEnv(Env<AttrContext> env) { Env<AttrContext> newEnv = env.dup(env.tree, env.info.dup(copyScope(env.info.scope))); if (newEnv.outer != null) { newEnv.outer = copyEnv(newEnv.outer); } return newEnv; }
public Type attribType(JCTree node, TypeSymbol sym) { Env<AttrContext> env = typeEnvs.get(sym); Env<AttrContext> localEnv = env.dup(node, env.info.dup()); return attribTree(node, localEnv, unknownTypeInfo); }
Env<AttrContext> copyEnv(Env<AttrContext> env) { Env<AttrContext> newEnv = env.dup(env.tree, env.info.dup(copyScope(env.info.scope))); if (newEnv.outer != null) { newEnv.outer = copyEnv(newEnv.outer); } return newEnv; }
private Env<AttrContext> baseEnv(JCClassDecl tree, Env<AttrContext> env) { Scope typaramScope = new Scope(tree.sym); if (tree.typarams != null) for (List<JCTypeParameter> typarams = tree.typarams; typarams.nonEmpty(); typarams = typarams.tail) typaramScope.enter(typarams.head.type.tsym); Env<AttrContext> outer = env.outer; // the base clause can't see members of this class Env<AttrContext> localEnv = outer.dup(tree, outer.info.dup(typaramScope)); localEnv.baseClause = true; localEnv.outer = outer; localEnv.info.isSelfCall = false; return localEnv; }
private Env<AttrContext> baseEnv(JCClassDecl tree, Env<AttrContext> env) { Scope typaramScope = new Scope(tree.sym); if (tree.typarams != null) for (List<JCTypeParameter> typarams = tree.typarams; typarams.nonEmpty(); typarams = typarams.tail) typaramScope.enter(typarams.head.type.tsym); Env<AttrContext> outer = env.outer; // the base clause can't see members of this class Env<AttrContext> localEnv = outer.dup(tree, outer.info.dup(typaramScope)); localEnv.baseClause = true; localEnv.outer = outer; localEnv.info.isSelfCall = false; return localEnv; }
Symbol getMemberReference(DiagnosticPosition pos, Env<AttrContext> env, JCMemberReference referenceTree, Type site, Name name) { site = types.capture(site); ReferenceLookupHelper lookupHelper = makeReferenceLookupHelper( referenceTree, site, name, List.<Type>nil(), null, VARARITY); Env<AttrContext> newEnv = env.dup(env.tree, env.info.dup()); Symbol sym = lookupMethod(newEnv, env.tree.pos(), site.tsym, nilMethodCheck, lookupHelper); env.info.pendingResolutionPhase = newEnv.info.pendingResolutionPhase; return sym; }
Symbol getMemberReference(DiagnosticPosition pos, Env<AttrContext> env, JCMemberReference referenceTree, Type site, Name name) { site = types.capture(site); ReferenceLookupHelper lookupHelper = makeReferenceLookupHelper( referenceTree, site, name, List.<Type>nil(), null, VARARITY); Env<AttrContext> newEnv = env.dup(env.tree, env.info.dup()); Symbol sym = lookupMethod(newEnv, env.tree.pos(), site.tsym, nilMethodCheck, lookupHelper); env.info.pendingResolutionPhase = newEnv.info.pendingResolutionPhase; return sym; }
public void visitForLoop(JCForLoop tree) { Env<AttrContext> loopEnv = env.dup(env.tree, env.info.dup(env.info.scope.dup())); attribStats(tree.init, loopEnv); if (tree.cond != null) attribExpr(tree.cond, loopEnv, syms.booleanType); loopEnv.tree = tree; // before, we were not in loop! attribStats(tree.step, loopEnv); attribStat(tree.body, loopEnv); loopEnv.info.scope.leave(); result = null; }
public void visitForLoop(JCForLoop tree) { Env<AttrContext> loopEnv = env.dup(env.tree, env.info.dup(env.info.scope.dup())); attribStats(tree.init, loopEnv); if (tree.cond != null) attribExpr(tree.cond, loopEnv, syms.booleanType); loopEnv.tree = tree; // before, we were not in loop! attribStats(tree.step, loopEnv); attribStat(tree.body, loopEnv); loopEnv.info.scope.leave(); result = null; }
public void visitForLoop(JCForLoop tree) { Env<AttrContext> loopEnv = env.dup(env.tree, env.info.dup(env.info.scope.dup())); try { attribStats(tree.init, loopEnv); if (tree.cond != null) attribExpr(tree.cond, loopEnv, syms.booleanType); loopEnv.tree = tree; // before, we were not in loop! attribStats(tree.step, loopEnv); attribStat(tree.body, loopEnv); result = null; } finally { loopEnv.info.scope.leave(); } }
public void visitForLoop(JCForLoop tree) { Env<AttrContext> loopEnv = env.dup(env.tree, env.info.dup(env.info.scope.dup())); try { attribStats(tree.init, loopEnv); if (tree.cond != null) attribExpr(tree.cond, loopEnv, syms.booleanType); loopEnv.tree = tree; // before, we were not in loop! attribStats(tree.step, loopEnv); attribStat(tree.body, loopEnv); result = null; } finally { loopEnv.info.scope.leave(); } }