@Override public Node leaveObjectNode(ObjectNode objectNode) { Node lastVisited = getPreviousFromPath(2); if (lastVisited instanceof BinaryNode) { BinaryNode bNode = (BinaryNode)lastVisited; if (bNode.lhs().equals(objectNode)) { // case of destructuring assignment { a, b} = .... // we dob't create object in the model, but process the property nodes -> skip reseting modelBuilder return super.leaveObjectNode(objectNode); } } modelBuilder.reset(); return super.leaveObjectNode(objectNode); }
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)); }
JoinPredecessorExpression trueExpression = tNode.getTrueExpression(); JoinPredecessorExpression falseExpression = tNode.getFalseExpression(); if (trueExpression.getExpression().equals(objectNode) || falseExpression.getExpression().equals(objectNode)) { if (bNode.lhs().equals(objectNode)) { } else if (bNode.lhs() instanceof ObjectNode && bNode.rhs().equals(objectNode)) {
if (lastNode instanceof BinaryNode) { BinaryNode bNode = (BinaryNode)lastNode; if (bNode.lhs().equals(accessNode)) { object = (JsObjectImpl) variable; if (lastVisited instanceof BinaryNode) { BinaryNode bNode = (BinaryNode)lastVisited; onLeftSite = bNode.tokenType() == TokenType.ASSIGN && bNode.lhs().equals(accessNode);
if (node instanceof Block) { Block block = (Block)node; if (block.isParameterBlock() && oNode != null && bNode != null && bNode.lhs().equals(oNode) ) {