@Override public Node leaveCallNode(CallNode callNode) { if (callNode.getFunction() instanceof AccessNode) { int size = exp.size(); if (size > 1 && ST_PRO.equals(exp.get(size - 2))) { exp.remove(size - 2); } } exp.add(exp.size() - 1, ST_CALL); return super.leaveCallNode(callNode); }
@Override public boolean enterCallNode(CallNode callNode) { callNode.getFunction().accept(this); return false; }
@Override public boolean enterCallNode(CallNode callNode) { addToPath(callNode); if (!(callNode.getFunction() instanceof FunctionNode)) { callNode.getFunction().accept(this); } if (exp.size() == 2 && ST_NEW.equals(exp.get(0))) { return false; } if (callNode.getFunction() instanceof AccessNode) { int size = exp.size(); if (size > 1 && ST_PRO.equals(exp.get(size - 2))) { exp.remove(size - 2); } } else if (callNode.getFunction() instanceof FunctionNode) { FunctionNode function = (FunctionNode) callNode.getFunction(); String name = builder.getFunctionName(function); // String name = function.getIdent().getName(); add(new TypeUsage(ST_CALL + name, function.getStart(), false)); return false; } if (exp.isEmpty()) { exp.add(ST_CALL); } else { exp.add(exp.size() - 1, ST_CALL); } return false; }
@Override public boolean enterCallNode(CallNode callNode) { functionArgumentStack.push(new ArrayList<JsObjectImpl>(3)); if (callNode.getFunction() instanceof IdentNode) { IdentNode iNode = (IdentNode)callNode.getFunction(); addOccurence(iNode, false, true); } for (Node argument : callNode.getArgs()) { if (argument instanceof IdentNode) { addOccurence((IdentNode) argument, false); } } processObjectPropertyAssignment(callNode); return super.enterCallNode(callNode); }
Collection<JsObjectImpl> functionArguments = functionArgumentStack.pop(); Node function = callNode.getFunction(); if (function instanceof AccessNode || function instanceof IdentNode) { List<Identifier> funcName; functionCalls.put(interceptor, calls); int callOffset = callNode.getFunction().getStart(); if (callNode.getFunction() instanceof AccessNode) { AccessNode anode = (AccessNode)callNode.getFunction(); callOffset = anode.getFinish() - anode.getProperty().length();
private JsArray handleArrayCreation(Node initNode, JsObject parent, Identifier name) { if (initNode instanceof UnaryNode && parent != null) { UnaryNode uNode = (UnaryNode)initNode; if (uNode.tokenType() == TokenType.NEW && uNode.getExpression() instanceof CallNode) { CallNode cNode = (CallNode)uNode.getExpression(); if (cNode.getFunction() instanceof IdentNode && "Array".equals(((IdentNode)cNode.getFunction()).getName())) { List<TypeUsage> itemTypes = new ArrayList<TypeUsage>(); for (Node node : cNode.getArgs()) { itemTypes.addAll(ModelUtils.resolveSemiTypeOfExpression(modelBuilder, node)); } EnumSet<Modifier> modifiers = parent.getJSKind() != JsElement.Kind.FILE ? EnumSet.of(Modifier.PRIVATE) : EnumSet.of(Modifier.PUBLIC); JsArrayImpl result = new JsArrayImpl(parent, name, name.getOffsetRange(), true, modifiers, parserResult.getSnapshot().getMimeType(), null); result.addTypesInArray(itemTypes); return result; } } } return null; }
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)); }
private void processObjectPropertyAssignment(CallNode cNode) { if (!(cNode.getFunction() instanceof AccessNode)) { return; AccessNode aNode = (AccessNode)cNode.getFunction(); if ("assign".equals(aNode.getProperty()) && aNode.getBase() instanceof IdentNode
if (base instanceof CallNode) { CallNode cNode = (CallNode)base; base = cNode.getFunction(); } else if (base instanceof IndexNode) { IndexNode iNode = (IndexNode) base;
if (un.tokenType() == TokenType.NEW) { CallNode constructor = (CallNode) un.getExpression(); createFunctionArgument(constructor.getFunction(), position, functionArguments, result);
rNode = (FunctionNode)init; } else if (init instanceof UnaryNode && ((UnaryNode)init).getExpression() instanceof CallNode && ((CallNode)((UnaryNode)init).getExpression()).getFunction() instanceof FunctionNode) { rNode = (FunctionNode)((CallNode)((UnaryNode)init).getExpression()).getFunction();
&& ((CallNode)((UnaryNode)init).getExpression()).getFunction() instanceof FunctionNode) { rNode = (FunctionNode)((CallNode)((UnaryNode)init).getExpression()).getFunction();