@Override public boolean enterClassNode(ClassNode classNode) { if (classNode.getConstructor() != null) { classNode.getConstructor().accept(this); } if (classNode.getClassElements() != null) { for (PropertyNode pn : classNode.getClassElements()) { pn.accept(this); } } return false; }
@Override public boolean enterCallNode(CallNode callNode) { callNode.getFunction().accept(this); return false; }
private boolean isKeyAndValueEquals(PropertyNode pNode) { if (pNode.getKey() instanceof IdentNode && pNode.getValue() instanceof IdentNode) { IdentNode key = (IdentNode)pNode.getKey(); IdentNode value = (IdentNode)pNode.getValue(); return key.getName().equals(value.getName()) && key.getStart() == value.getStart(); } if (pNode.getKey() instanceof IdentNode && pNode.getValue() instanceof BinaryNode && ((BinaryNode)pNode.getValue()).tokenType() == TokenType.ASSIGN && ((BinaryNode)pNode.getValue()).lhs() instanceof IdentNode) { IdentNode key = (IdentNode)pNode.getKey(); IdentNode value = (IdentNode)((BinaryNode)pNode.getValue()).lhs(); return key.getName().equals(value.getName()) && key.getStart() == value.getStart(); } return false; }
public String getFunctionName(FunctionNode node) { if (node.isAnonymous() ) { return globalObject.getName() + node.getName().replace(':', '#'); } else { if (node.isNamedFunctionExpression()) { return node.getName(); } return node.getIdent().getName(); } } }
private boolean isFunctionAnonymous(FunctionNode fn) { boolean result = false; if (fn.isAnonymous() ) { Node lastVisited = getPreviousFromPath(2); if (fn.getIdent().getName().startsWith("L:") && !(lastVisited instanceof PropertyNode)) { //NOI18N // XXX this depends on the implemenation of parser. Find the better way result = true; } else if (fn.getIdent().getStart() == fn.getIdent().getFinish()) { if (lastVisited instanceof CallNode) { result = true; } } } return result; }
private static List<Identifier> getName(PropertyNode propertyNode, ParserResult parserResult) { List<Identifier> name = new ArrayList(1); if (propertyNode.getKey() instanceof IdentNode) { IdentNode ident = (IdentNode) propertyNode.getKey(); name.add(new Identifier(ident.getName(), getOffsetRange(ident))); } else if (propertyNode.getKey() instanceof LiteralNode){ LiteralNode lNode = (LiteralNode)propertyNode.getKey(); name.add(new Identifier(lNode.getString(), new OffsetRange(lNode.getStart(), lNode.getFinish()))); } return name; }
@Override public boolean enterAccessNode(AccessNode accessNode) { if (typeOffset == -1) { typeOffset = accessNode.getFinish() - accessNode.getProperty().length(); } accessNode.getBase().accept(this); exp.add(accessNode.getProperty()); return false; }
@Override public boolean enterTernaryNode(TernaryNode ternaryNode) { if (ternaryNode.getTest() instanceof IdentNode) { addOccurence((IdentNode)ternaryNode.getTest(), false); } if (ternaryNode.getTrueExpression().getExpression() instanceof IdentNode) { addOccurence((IdentNode)ternaryNode.getTrueExpression().getExpression(), false); } if (ternaryNode.getFalseExpression().getExpression() instanceof IdentNode) { addOccurence((IdentNode)ternaryNode.getFalseExpression().getExpression(), false); } return super.enterTernaryNode(ternaryNode); }
@Override public boolean enterTernaryNode(TernaryNode ternaryNode) { ternaryNode.getTrueExpression().accept(this); add(exp, offsetVisitor.findOffset(ternaryNode.getTrueExpression()), false); reset(); Node third = ternaryNode.getFalseExpression(); third.accept(this); int typeStart = offsetVisitor.findOffset(third); add(exp, typeStart, false); reset(); return false; }
private void addOccurence(IdentNode iNode, boolean leftSite, boolean isFunction) { if (!iNode.isDestructuredParameter()) { // skip names of destructured param (it's syntetic) addOccurrence(iNode.getName(), getOffsetRange(iNode), leftSite, isFunction); } }
@Override public Node leaveCatchNode(CatchNode catchNode) { if (!EmbeddingHelper.containsGeneratedIdentifier(catchNode.getException().getName())) { modelBuilder.reset(); } return super.leaveCatchNode(catchNode); }
private boolean canBeSingletonPattern(int pathIndex) { return (getPath().size() > pathIndex + 3 && getPreviousFromPath(pathIndex) instanceof FunctionNode && getPreviousFromPath(pathIndex + 1) instanceof CallNode && ((CallNode)getPreviousFromPath(pathIndex + 1)).getFunction().equals(getPreviousFromPath(pathIndex)) && getPreviousFromPath(pathIndex + 2) instanceof UnaryNode && (getPreviousFromPath(pathIndex + 3) instanceof BinaryNode || getPreviousFromPath(pathIndex + 3) instanceof VarNode)); }
public FinderOffsetTypeVisitor() { super(new LexicalContext()); }
@Override public boolean enterAccessNode(AccessNode accessNode) { typeOffset = accessNode.getStart(); return false; } }
@Override public boolean enterIdentNode(IdentNode identNode) { typeOffset = identNode.getStart(); return false; }
int findOffset (Node expression) { expression.accept(this); return typeOffset; }
public PathNodeVisitor() { this(new LexicalContext()); }