From 800ce51086a0ffb5fab67d382c1e59399193e916 Mon Sep 17 00:00:00 2001
From: Pavel Vojtechovsky
Date: Sun, 29 Oct 2017 12:55:31 +0100
Subject: [PATCH] feature: CtElement#getRoleInParent()
---
.../spoon/reflect/declaration/CtElement.java | 7 +++
.../reflect/code/CtVariableAccessImpl.java | 12 ++--
.../reflect/declaration/CtElementImpl.java | 20 +++++++
src/test/java/spoon/test/main/MainTest.java | 60 ++++++++++++++-----
4 files changed, 75 insertions(+), 24 deletions(-)
diff --git a/src/main/java/spoon/reflect/declaration/CtElement.java b/src/main/java/spoon/reflect/declaration/CtElement.java
index 68b98532808..47c47cec2a7 100644
--- a/src/main/java/spoon/reflect/declaration/CtElement.java
+++ b/src/main/java/spoon/reflect/declaration/CtElement.java
@@ -19,6 +19,7 @@
import spoon.processing.FactoryAccessor;
import spoon.reflect.code.CtComment;
import spoon.reflect.cu.SourcePosition;
+import spoon.reflect.path.CtRole;
import spoon.reflect.reference.CtTypeReference;
import spoon.reflect.visitor.CtVisitable;
import spoon.reflect.visitor.Filter;
@@ -255,6 +256,12 @@ List getAnnotatedChildren(
*/
void updateAllParentsBelow();
+ /**
+ * @return {@link CtRole} of the parent's attribute where this element is used.
+ * returns null if parent doesn't links this element or if isParentInitialized()==false.
+ */
+ CtRole getRoleInParent();
+
/*
* Deletes the element. For instance, delete a statement from its containing block. Warning: it may result in an incorrect AST, use at your own risk.
*/
diff --git a/src/main/java/spoon/support/reflect/code/CtVariableAccessImpl.java b/src/main/java/spoon/support/reflect/code/CtVariableAccessImpl.java
index 7b78ad32637..f82008a0055 100644
--- a/src/main/java/spoon/support/reflect/code/CtVariableAccessImpl.java
+++ b/src/main/java/spoon/support/reflect/code/CtVariableAccessImpl.java
@@ -34,15 +34,11 @@ public abstract class CtVariableAccessImpl extends CtExpressionImpl implem
@Override
public CtVariableReference getVariable() {
- if (variable != null) {
- return (CtVariableReference) variable;
- }
- if (getFactory() != null) {
- CtVariableReference