@Override public List<VariableDeclarator> localVariablesExposedToChild(Node child) { List<VariableDeclarator> res = new LinkedList<>(); for (Expression expression : wrappedNode.getInitialization()) { if (expression instanceof VariableDeclarationExpr) { VariableDeclarationExpr variableDeclarationExpr = (VariableDeclarationExpr) expression; res.addAll(variableDeclarationExpr.getVariables()); } } return res; } }
@Override public ForStmt doMerge(ForStmt first, ForStmt second) { ForStmt fs = new ForStmt(); fs.setBody(mergeSingle(first.getBody(), second.getBody())); fs.setUpdate(mergeCollectionsInOrder(first.getUpdate(), second.getUpdate())); fs.setCompare(mergeSingle(first.getCompare(), second.getCompare())); fs.setInit(mergeCollectionsInOrder(first.getInit(), second.getInit())); return fs; }
@Override public boolean doIsEquals(ForStmt first, ForStmt second) { if(!isEqualsUseMerger(first.getInit(),second.getInit())) return false; if(!isEqualsUseMerger(first.getCompare(),second.getCompare())) return false; if(!isEqualsUseMerger(first.getUpdate(),second.getUpdate())) return false; if(!isEqualsUseMerger(first.getBody(),second.getBody())) return false; return true; } }
@Override public SymbolReference<? extends ResolvedValueDeclaration> solveSymbol(String name, TypeSolver typeSolver) { for (Expression expression : wrappedNode.getInitialization()) { if (expression instanceof VariableDeclarationExpr) { VariableDeclarationExpr variableDeclarationExpr = (VariableDeclarationExpr) expression; for (VariableDeclarator variableDeclarator : variableDeclarationExpr.getVariables()) { if (variableDeclarator.getName().getId().equals(name)) { return SymbolReference.solved(JavaParserSymbolDeclaration.localVar(variableDeclarator, typeSolver)); } } } else if (!(expression instanceof AssignExpr || expression instanceof MethodCallExpr)) { throw new UnsupportedOperationException(expression.getClass().getCanonicalName()); } } if (getParentNode(wrappedNode) instanceof NodeWithStatements) { return StatementContext.solveInBlock(name, typeSolver, wrappedNode); } else { return getParent().solveSymbol(name, typeSolver); } }
@Override public SymbolReference<? extends ResolvedValueDeclaration> solveSymbol(String name) { for (Expression expression : wrappedNode.getInitialization()) { if (expression instanceof VariableDeclarationExpr) { VariableDeclarationExpr variableDeclarationExpr = (VariableDeclarationExpr) expression; for (VariableDeclarator variableDeclarator : variableDeclarationExpr.getVariables()) { if (variableDeclarator.getName().getId().equals(name)) { return SymbolReference.solved(JavaParserSymbolDeclaration.localVar(variableDeclarator, typeSolver)); } } } else if (!(expression instanceof AssignExpr || expression instanceof MethodCallExpr)) { throw new UnsupportedOperationException(expression.getClass().getCanonicalName()); } } if (requireParentNode(wrappedNode) instanceof NodeWithStatements) { return StatementContext.solveInBlock(name, typeSolver, wrappedNode); } else { return getParent().solveSymbol(name); } }
@Override public SymbolReference<? extends ResolvedValueDeclaration> solveSymbol(String name, TypeSolver typeSolver) { for (Expression expression : wrappedNode.getInitialization()) { if (expression instanceof VariableDeclarationExpr) { VariableDeclarationExpr variableDeclarationExpr = (VariableDeclarationExpr) expression; for (VariableDeclarator variableDeclarator : variableDeclarationExpr.getVariables()) { if (variableDeclarator.getName().getId().equals(name)) { return SymbolReference.solved(JavaParserSymbolDeclaration.localVar(variableDeclarator, typeSolver)); } } } else if (!(expression instanceof AssignExpr || expression instanceof MethodCallExpr)) { throw new UnsupportedOperationException(expression.getClass().getCanonicalName()); } } if (getParentNode(wrappedNode) instanceof NodeWithStatements) { return StatementContext.solveInBlock(name, typeSolver, wrappedNode); } else { return getParent().solveSymbol(name, typeSolver); } }