private static boolean hasRealPrefix(ASTPrimaryExpression expr) { ASTPrimaryPrefix prefix = expr.getFirstDescendantOfType(ASTPrimaryPrefix.class); return !prefix.usesThisModifier() && !prefix.usesSuperModifier(); }
private void analyze(ASTPrimaryPrefix prefixNode) { List<ASTName> names = prefixNode.findDescendantsOfType(ASTName.class); baseName = "unknown"; methodName = "unknown"; if (!names.isEmpty()) { baseName = names.get(0).getImage(); int dot = baseName.lastIndexOf('.'); if (dot == -1) { methodName = baseName; baseName = THIS; } else { methodName = baseName.substring(dot + 1); baseName = baseName.substring(0, dot); baseNameInWhitelist = baseName.matches(PREFIX_EXCLUSION_PATTERN); } } else { if (prefixNode.usesThisModifier()) { baseName = THIS; } else if (prefixNode.usesSuperModifier()) { baseName = SUPER; } } }
private boolean isForeignAttributeOrMethod(ASTPrimaryExpression node) { boolean result; String nameImage = getNameImage(node); if (nameImage != null && (!nameImage.contains(".") || nameImage.startsWith("this."))) { result = false; } else if (nameImage == null && node.getFirstDescendantOfType(ASTPrimaryPrefix.class).usesThisModifier()) { result = false; } else if (nameImage == null && node.hasDescendantOfAnyType(ASTLiteral.class, ASTAllocationExpression.class)) { result = false; } else { result = true; } return result; }
/** * Simply return if the image start with keyword 'this' or 'super'. * * @return true, if keyword is used, false otherwise. */ public boolean useThisOrSuper() { Node node = location.jjtGetParent(); if (node instanceof ASTPrimaryExpression) { ASTPrimaryExpression primaryExpression = (ASTPrimaryExpression) node; ASTPrimaryPrefix prefix = (ASTPrimaryPrefix) primaryExpression.jjtGetChild(0); if (prefix != null) { return prefix.usesSuperModifier() || prefix.usesThisModifier(); } } return image.startsWith(THIS_DOT) || image.startsWith(SUPER_DOT); }
private boolean isExpectStatement(ASTStatementExpression expression, Map<String, List<NameOccurrence>> expectables) { ASTPrimaryExpression pe = expression.getFirstChildOfType(ASTPrimaryExpression.class); if (pe != null) { ASTPrimaryPrefix primaryPrefix = pe.getFirstChildOfType(ASTPrimaryPrefix.class); Node name = pe.getFirstDescendantOfType(ASTName.class); if (!primaryPrefix.usesThisModifier() && name != null) { String[] parts = name.getImage().split("\\."); if (parts.length >= 2) { String varname = parts[0]; String methodName = parts[1]; if (expectables.containsKey(varname) && "expect".equals(methodName)) { return true; } } } else if (primaryPrefix.usesThisModifier()) { List<ASTPrimarySuffix> primarySuffixes = pe.findChildrenOfType(ASTPrimarySuffix.class); if (primarySuffixes.size() >= 2) { String varname = primarySuffixes.get(0).getImage(); String methodName = primarySuffixes.get(1).getImage(); if (expectables.containsKey(varname) && "expect".equals(methodName)) { return true; } } } } return false; }
private boolean isStandAlonePostfix(Node primaryExpression) { if (!(primaryExpression instanceof ASTPostfixExpression) || !(primaryExpression.jjtGetParent() instanceof ASTStatementExpression)) { return false; } ASTPrimaryPrefix pf = (ASTPrimaryPrefix) ((ASTPrimaryExpression) primaryExpression.jjtGetChild(0)) .jjtGetChild(0); if (pf.usesThisModifier()) { return true; } return thirdChildHasDottedName(primaryExpression); }
private String getVariableName(ASTPrimaryExpression node) { ASTPrimaryPrefix prefix = node.getFirstDescendantOfType(ASTPrimaryPrefix.class); if (prefix.usesThisModifier()) { List<ASTPrimarySuffix> suffixes = node.findChildrenOfType(ASTPrimarySuffix.class); if (suffixes.size() > 1) { if (!suffixes.get(1).isArguments()) { // not a method call return suffixes.get(0).getImage(); } } } ASTName name = prefix.getFirstDescendantOfType(ASTName.class); String variableName = null; if (name != null) { int dotIndex = name.getImage().indexOf("."); if (dotIndex == -1) { variableName = name.getImage(); } else { variableName = name.getImage().substring(0, dotIndex); } } return variableName; }
private String getExpressionVarName(Node e) { String assignedVar = getFirstNameImage(e); if (assignedVar == null) { ASTPrimarySuffix suffix = e.getFirstDescendantOfType(ASTPrimarySuffix.class); if (suffix != null) { assignedVar = suffix.getImage(); ASTPrimaryPrefix prefix = e.getFirstDescendantOfType(ASTPrimaryPrefix.class); if (prefix != null) { if (prefix.usesThisModifier()) { assignedVar = "this." + assignedVar; } else if (prefix.usesSuperModifier()) { assignedVar = "super." + assignedVar; } } } } return assignedVar; }
if (primaryPrefix.usesSuperModifier()) { result = "super"; } else if (primaryPrefix.usesThisModifier()) { result = "this";
public NameFinder(ASTPrimaryExpression node) { ASTPrimaryPrefix prefix = (ASTPrimaryPrefix) node.jjtGetChild(0); if (prefix.usesSuperModifier()) { add(new JavaNameOccurrence(prefix, "super")); } else if (prefix.usesThisModifier()) { add(new JavaNameOccurrence(prefix, "this")); } for (int i = 0; i < node.jjtGetNumChildren(); i++) { checkForNameChild((JavaNode) node.jjtGetChild(i)); } }
.jjtGetChild(0); String name = null; if (pp.usesThisModifier()) { ASTPrimarySuffix priSuf = expr.getFirstDescendantOfType(ASTPrimarySuffix.class); name = priSuf.getImage();
if (pp != null && pp.usesThisModifier()) { final ASTPrimarySuffix ps = ret.getFirstDescendantOfType(ASTPrimarySuffix.class); if (ps.hasImageEqualTo(vn)) {
private static boolean hasRealPrefix(ASTPrimaryExpression expr) { ASTPrimaryPrefix prefix = expr.getFirstDescendantOfType(ASTPrimaryPrefix.class); return !prefix.usesThisModifier() && !prefix.usesSuperModifier(); }
private void analyze(ASTPrimaryPrefix prefixNode) { List<ASTName> names = prefixNode.findDescendantsOfType(ASTName.class); baseName = "unknown"; methodName = "unknown"; if (!names.isEmpty()) { baseName = names.get(0).getImage(); int dot = baseName.lastIndexOf('.'); if (dot == -1) { methodName = baseName; baseName = THIS; } else { methodName = baseName.substring(dot + 1); baseName = baseName.substring(0, dot); baseNameInWhitelist = baseName.matches(PREFIX_EXCLUSION_PATTERN); } } else { if (prefixNode.usesThisModifier()) { baseName = THIS; } else if (prefixNode.usesSuperModifier()) { baseName = SUPER; } } }
private boolean isForeignAttributeOrMethod(ASTPrimaryExpression node) { boolean result; String nameImage = getNameImage(node); if (nameImage != null && (!nameImage.contains(".") || nameImage.startsWith("this."))) { result = false; } else if (nameImage == null && node.getFirstDescendantOfType(ASTPrimaryPrefix.class).usesThisModifier()) { result = false; } else if (nameImage == null && node.hasDescendantOfAnyType(ASTLiteral.class, ASTAllocationExpression.class)) { result = false; } else { result = true; } return result; }
/** * Simply return if the image start with keyword 'this' or 'super'. * * @return true, if keyword is used, false otherwise. */ public boolean useThisOrSuper() { Node node = location.jjtGetParent(); if (node instanceof ASTPrimaryExpression) { ASTPrimaryExpression primaryExpression = (ASTPrimaryExpression) node; ASTPrimaryPrefix prefix = (ASTPrimaryPrefix) primaryExpression.jjtGetChild(0); if (prefix != null) { return prefix.usesSuperModifier() || prefix.usesThisModifier(); } } return image.startsWith(THIS_DOT) || image.startsWith(SUPER_DOT); }
private String getVariableName(ASTPrimaryExpression node) { ASTPrimaryPrefix prefix = node.getFirstDescendantOfType(ASTPrimaryPrefix.class); if (prefix.usesThisModifier()) { List<ASTPrimarySuffix> suffixes = node.findChildrenOfType(ASTPrimarySuffix.class); if (suffixes.size() > 1) { if (!suffixes.get(1).isArguments()) { // not a method call return suffixes.get(0).getImage(); } } } ASTName name = prefix.getFirstDescendantOfType(ASTName.class); String variableName = null; if (name != null) { int dotIndex = name.getImage().indexOf("."); if (dotIndex == -1) { variableName = name.getImage(); } else { variableName = name.getImage().substring(0, dotIndex); } } return variableName; }
private boolean isStandAlonePostfix(Node primaryExpression) { if (!(primaryExpression instanceof ASTPostfixExpression) || !(primaryExpression.jjtGetParent() instanceof ASTStatementExpression)) { return false; } ASTPrimaryPrefix pf = (ASTPrimaryPrefix) ((ASTPrimaryExpression) primaryExpression.jjtGetChild(0)) .jjtGetChild(0); if (pf.usesThisModifier()) { return true; } return thirdChildHasDottedName(primaryExpression); }
private String getExpressionVarName(Node e) { String assignedVar = getFirstNameImage(e); if (assignedVar == null) { ASTPrimarySuffix suffix = e.getFirstDescendantOfType(ASTPrimarySuffix.class); if (suffix != null) { assignedVar = suffix.getImage(); ASTPrimaryPrefix prefix = e.getFirstDescendantOfType(ASTPrimaryPrefix.class); if (prefix != null) { if (prefix.usesThisModifier()) { assignedVar = "this." + assignedVar; } else if (prefix.usesSuperModifier()) { assignedVar = "super." + assignedVar; } } } } return assignedVar; }
public NameFinder(ASTPrimaryExpression node) { ASTPrimaryPrefix prefix = (ASTPrimaryPrefix) node.jjtGetChild(0); if (prefix.usesSuperModifier()) { add(new JavaNameOccurrence(prefix, "super")); } else if (prefix.usesThisModifier()) { add(new JavaNameOccurrence(prefix, "this")); } for (int i = 0; i < node.jjtGetNumChildren(); i++) { checkForNameChild((JavaNode) node.jjtGetChild(i)); } }