private CtRole getRoleInCompilationUnit(CtElement element) { CtRole role = element.getRoleInParent(); if (role == CtRole.CONTAINED_TYPE) { role = CtRole.DECLARED_TYPE; } return role; }
@Override public void scan(CtRole role, CtElement element) { if (element != null) { //contract: getMyRoleInParent returns the expected parent assertSame(role, element.getRoleInParent()); } super.scan(role, element); } });
/** * @param element the {@link CtElement} whose relation from `element.getParent()` to `element` is needed. * @return {@link RoleHandler} handling relation from `element.getParent()` to `element` */ public static RoleHandler getRoleHandlerWrtParent(CtElement element) { if (element.isParentInitialized() == false) { return null; } CtElement parent = element.getParent(); CtRole roleInParent = element.getRoleInParent(); if (roleInParent == null) { return null; } return getRoleHandler(parent.getClass(), roleInParent); } }
private boolean appendPathIn(StringBuilder sb, CtElement element, CtElement parent) { if (element != parent && element != null) { CtRole roleInParent = element.getRoleInParent(); if (roleInParent == null) { return false; } if (appendPathIn(sb, element.getParent(), parent)) { sb.append("/").append(getElementTypeName(element.getParent())); } sb.append(".").append(roleInParent.getCamelCaseName()); return true; } return false; }
.scan(element.getRoleInParent(), element);
static void linkToParent(CtElement owner, CtElement element) { if (owner.getFactory().getEnvironment().checksAreSkipped() == false && element.isParentInitialized() && element.getParent() != owner) { //the `e` already has an different parent. Check if it is still linked to that parent if (element.getRoleInParent() != null) { throw new SpoonException("The default behavior has changed, a new check has been added! Don't worry, you can disable this check\n" + "with one of the following options:\n" + " - by configuring Spoon with getEnvironment().setSelfChecks(true)\n" + " - by removing the node from its previous parent (element.delete())\n" + " - by cloning the node before adding it here (element.clone())\n" ); } } element.setParent(owner); }
while (cur != root) { CtElement parent = cur.getParent(); CtRole role = cur.getRoleInParent(); if (role == null) { throw new CtPathException();
/** * Ignore some element from the AST * * @param element * @return */ private boolean isToIgnore(CtElement element) { if (element instanceof CtStatementList && !(element instanceof CtCase)) { if (element.getRoleInParent() == CtRole.ELSE || element.getRoleInParent() == CtRole.THEN) { return false; } return true; } return element.isImplicit() || element instanceof CtReference; }
/** * Ignore some element from the AST * @param element * @return */ private boolean isToIgnore(CtElement element) { if (element instanceof CtStatementList && !(element instanceof CtCase)) { if (element.getRoleInParent() == CtRole.ELSE || element.getRoleInParent() == CtRole.THEN) { return false; } return true; } return element.isImplicit() || element instanceof CtReference; }
private ITree createNode(CtElement element, String label) { String nodeTypeName = NOTYPE; if (element != null) { nodeTypeName = getTypeName(element.getClass().getSimpleName()); } if (element instanceof CtBlock) { nodeTypeName = element.getRoleInParent().toString(); } ITree newNode = createNode(nodeTypeName, label); newNode.setMetadata(SpoonGumTreeBuilder.SPOON_OBJECT, element); return newNode; }
private ITree createNode(CtElement element, String label) { String nodeTypeName = NOTYPE; if (element != null) { nodeTypeName = getTypeName(element.getClass().getSimpleName()); } if (element instanceof CtBlock) { nodeTypeName = element.getRoleInParent().toString(); } ITree newNode = createNode(nodeTypeName, label); newNode.setMetadata(SpoonGumTreeBuilder.SPOON_OBJECT, element); element.putMetadata(SpoonGumTreeBuilder.GUMTREE_NODE, newNode); return newNode; }
public boolean isStatement(CtElement toModif) { if (!(toModif instanceof CtStatement)) return false; if (toModif.getParent() instanceof CtBlock) return true; CtRole roleInParent = toModif.getRoleInParent(); if (CtRole.BODY.equals(roleInParent) || CtRole.THEN.equals(roleInParent) || CtRole.ELSE.equals(roleInParent)) return true; return false; }