private boolean varDeclaredInDifferentFunction(Var v, Scope scope) { if (v == null) { return true; } else if (v.scope != scope) { Node declarationRoot = NodeUtil.getEnclosingFunction(v.scope.rootNode); Node scopeRoot = NodeUtil.getEnclosingFunction(scope.rootNode); return declarationRoot != scopeRoot; } else { return false; } }
public static boolean isInFunction(Node n) { return getEnclosingFunction(n) != null; }
public static boolean isInFunction(Node n) { return getEnclosingFunction(n) != null; }
/** * Returns the qualified name node of the function whose scope we're in, * or null if it cannot be found. */ private static Node getEnclosingDeclNameNode(Node n) { Node fn = NodeUtil.getEnclosingFunction(n); return fn == null ? null : NodeUtil.getNameNode(fn); }
/** * Returns the qualified name node of the function whose scope we're in, * or null if it cannot be found. */ private static Node getEnclosingDeclNameNode(Node n) { Node fn = NodeUtil.getEnclosingFunction(n); return fn == null ? null : NodeUtil.getNameNode(fn); }
private void validateWithinAsyncFunction(Node n) { Node parentFunction = NodeUtil.getEnclosingFunction(n); if (parentFunction == null || !parentFunction.isAsyncFunction()) { violation("'await' expression is not within an async function", n); } }
/** * Check if we can safely generate a field initializer. We don't do this if the assignment rhs is * not a literal or the enclosing function is not a constructor. */ private boolean canPromoteFieldInitializer(ClassMemberDeclaration declaration) { if (!NodeUtil.isLiteralValue(declaration.rhs, false)) { return false; } Node fnNode = NodeUtil.getEnclosingFunction(declaration.exprRoot); if (fnNode != null) { String fnName = getEnclosingFunctionName(fnNode); if (!"constructor".equals(fnName)) { return false; } } return true; }
@Nullable private static String getClassNameOfThisProp(Node getprop) { if (!getprop.isGetProp() || !getprop.getFirstChild().isThis()) { return null; } Node function = NodeUtil.getEnclosingFunction(getprop); if (function == null) { return null; } String className = getClassName(function); if (isNullOrEmpty(className)) { return null; } return className; }
private void checkClassReassignment(Node clazz) { Node name = NodeUtil.getNameNode(clazz); Node enclosingFunction = NodeUtil.getEnclosingFunction(clazz); if (enclosingFunction == null) { return; } CheckClassAssignments checkAssigns = new CheckClassAssignments(name); NodeTraversal.traverse(compiler, enclosingFunction, checkAssigns); }
private void checkClassReassignment(Node clazz) { Node name = NodeUtil.getNameNode(clazz); Node enclosingFunction = NodeUtil.getEnclosingFunction(clazz); if (enclosingFunction == null) { return; } CheckClassAssignments checkAssigns = new CheckClassAssignments(name); NodeTraversal.traverseEs6(compiler, enclosingFunction, checkAssigns); }
@Override public void visit(NodeTraversal t, Node n, Node parent) { Node enclosingBlock = NodeUtil.getEnclosingFunction(n); if (jsScope.getRootNode() == enclosingBlock || !n.isName() || parent.isFunction()) { return; } String name = n.getString(); Var var = t.getScope().getVar(name); if (var != null) { Node enclosingScopeNode = NodeUtil.getEnclosingFunction(var.getNode()); if (enclosingScopeNode == jsScope.getRootNode()) { escaped.add(var); } } } };
@Override public void visit(NodeTraversal t, Node n, Node parent) { int nodeType = n.getType(); if (nodeType == Token.CALL || nodeType == Token.NEW) { Callsite callsite = createCallsite(n); Node containingFunctionNode = NodeUtil.getEnclosingFunction(t.getScopeRoot()); if (containingFunctionNode == null) { containingFunctionNode = t.getClosestHoistScope().getRootNode(); } Function containingFunction = functionsByNode.get(containingFunctionNode); if (containingFunction == null) { containingFunction = createFunction(containingFunctionNode); } callsite.containingFunction = containingFunction; containingFunction.addCallsiteInFunction(callsite); connectCallsiteToTargets(callsite, provider); } else if (n.isFunction()) { if (!functionsByNode.containsKey(n)) { createFunction(n); } } } });
private boolean canBeRedeclared(Node n, Scope s) { if (!NodeUtil.isExprAssign(n)) { return false; } Node assign = n.getFirstChild(); Node lhs = assign.getFirstChild(); if (!lhs.isName()) { return false; } Var var = s.getVar(lhs.getString()); return var != null && (NodeUtil.getEnclosingFunction(var.getScope().getRootNode()) == NodeUtil.getEnclosingFunction(s.getRootNode())) && !isNamedParameter(var) && !blacklistedVars.contains(var); } }
&& NodeUtil.getEnclosingFunction(scopeRoot.getParent()) == null) || (NodeUtil.isFunctionBlock(scopeRoot) && NodeUtil.getEnclosingFunction(scopeRoot.getGrandparent()) == null)) { return;
Node enclosing = NodeUtil.getEnclosingFunction(n); if (enclosing != null && enclosing.isGeneratorFunction() enclosing = NodeUtil.getEnclosingFunction(n); if (enclosing != null && enclosing.isGeneratorFunction()) { n.getParent().replaceChild(n, IR.name(GENERATOR_THIS));
if (NodeUtil.getEnclosingFunction(ref).isArrowFunction()) { nextArguments = true;
private void visitSuperCall(NodeTraversal t, Node n, Node parent) { Node classNode = NodeUtil.getEnclosingClass(n); if (classNode == null || classNode.getSecondChild().isEmpty()) { t.report(n, INVALID_SUPER_CALL); return; } Node fn = NodeUtil.getEnclosingFunction(parent); if (fn == null) { t.report(n, INVALID_SUPER_CALL); return; } Node memberDef = fn.getParent(); if (memberDef.isMemberFunctionDef()) { if (memberDef.matchesQualifiedName("constructor")) { // No error. } else { t.report(n, INVALID_SUPER_CALL_WITH_SUGGESTION, memberDef.getString()); } } else { t.report(n, INVALID_SUPER_CALL); } }
Node fn = NodeUtil.getEnclosingFunction(parent); if (fn == null) { t.report(n, INVALID_SUPER_CALL);
Node enclosingFunction = NodeUtil.getEnclosingFunction(node); if (enclosingFunction == null || callOrNewNode.getFirstChild().getString() .equals(NodeUtil.getNearestFunctionName(enclosingFunction))) {
private void visitLoop(Node n) { Node enclosingFunc = NodeUtil.getEnclosingFunction(n); if (enclosingFunc == null || !enclosingFunc.isGeneratorFunction() || NodeUtil.isForIn(n)) { return;