@Override public boolean computeScopeFlags(IRScope scope) { scope.getFlags().add(IRFlags.RECEIVES_KEYWORD_ARGS); return true; }
@Override public boolean computeScopeFlags(IRScope scope) { scope.getFlags().add(IRFlags.RECEIVES_CLOSURE_ARG); return true; }
@Override public boolean computeScopeFlags(IRScope scope) { EnumSet<IRFlags> flags = scope.getFlags(); flags.addAll(IRFlags.REQUIRE_ALL_FRAME_FIELDS); return true; } }
@Override public boolean computeScopeFlags(IRScope scope) { // SSS: Inner-classes are defined with closures and // a return in the closure can force a return from this method // For now, conservatively assume that a scope with inner-classes // can receive non-local returns. (Alternatively, have to inspect // all lexically nested scopes, not just closures in computeScopeFlags()) scope.getFlags().add(IRFlags.CAN_RECEIVE_NONLOCAL_RETURNS); return true; }
@Override public boolean computeScopeFlags(IRScope scope) { scope.getFlags().add(IRFlags.REQUIRES_DYNSCOPE); return true; }
@Override public boolean computeScopeFlags(IRScope scope) { scope.getFlags().add(IRFlags.REQUIRES_DYNSCOPE); return true; }
@Override public boolean computeScopeFlags(IRScope scope) { scope.getFlags().add(IRFlags.BINDING_HAS_ESCAPED); return true; }
@Override public boolean computeScopeFlags(IRScope scope) { scope.getFlags().add(IRFlags.RECEIVES_CLOSURE_ARG); return true; }
@Override public boolean computeScopeFlags(IRScope scope) { EnumSet<IRFlags> flags = scope.getFlags(); flags.addAll(IRFlags.REQUIRE_ALL_FRAME_FIELDS); return true; } }
@Override public boolean computeScopeFlags(IRScope scope) { scope.getFlags().add(IRFlags.REQUIRES_BACKREF); return true; } }
@Override public boolean computeScopeFlags(IRScope scope) { scope.getFlags().add(IRFlags.HAS_END_BLOCKS); return true; }
public boolean parentMaybeUsingRefinements() { for (IRScope s = this; s != null; s = s.getLexicalParent()) { if (s.getFlags().contains(MAYBE_USING_REFINEMENTS)) return true; // Evals cannot see outer scope 'using' if (s instanceof IREvalScript) return false; } return false; }
@Override public boolean computeScopeFlags(IRScope scope) { super.computeScopeFlags(scope); // $~ is implicitly used since Backref and NthRef operands // access it and $~ is not made explicit in those operands. scope.getFlags().add(REQUIRES_BACKREF); return true; }
@Override public boolean computeScopeFlags(IRScope scope) { super.computeScopeFlags(scope); scope.getFlags().add(REQUIRES_BLOCK); return true; }
@Override public boolean computeScopeFlags(IRScope scope) { super.computeScopeFlags(scope); scope.getFlags().add(IRFlags.USES_ZSUPER); return true; }
@Override public boolean computeScopeFlags(IRScope scope) { super.computeScopeFlags(scope); // $~ is implicitly used since Backref and NthRef operands // access it and $~ is not made explicit in those operands. scope.getFlags().add(REQUIRES_BACKREF); return true; }