Bug 548245: [R-Editor] Fix Open Declaration for element references with
sub name
Change-Id: I46a488fc8424c195d27d2c24fd01238a16e37e97
diff --git a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/model/RModel.java b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/model/RModel.java
index b30664e..fe8a69d 100644
--- a/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/model/RModel.java
+++ b/r/org.eclipse.statet.r.core/src/org/eclipse/statet/r/core/model/RModel.java
@@ -238,6 +238,10 @@
assert (access != null);
final List<ISourceElement> list= new ArrayList<>();
+ if (access.getSegmentName() == null) {
+ return list;
+ }
+
final IRFrame suFrame= access.getFrame();
final List<IRFrame> directFrames= RModel.createDirectFrameList(suFrame);
for (final IRFrame frame : directFrames) {
@@ -258,7 +262,9 @@
final List<? extends IRElement> elements= frame.getModelChildren(null);
for (final IRElement element : elements) {
final RElementName name= element.getElementName();
- if (name != null && name.equals(access)
+ if (name != null
+ && access.getType() == name.getType()
+ && access.getSegmentName().equals(name.getSegmentName())
&& element instanceof ISourceElement) {
list.add((ISourceElement) element);
}
diff --git a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/sourceediting/ROpenDeclarationHandler.java b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/sourceediting/ROpenDeclarationHandler.java
index 690fcca..ab1ccc6 100644
--- a/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/sourceediting/ROpenDeclarationHandler.java
+++ b/r/org.eclipse.statet.r.ui/src/org/eclipse/statet/r/ui/sourceediting/ROpenDeclarationHandler.java
@@ -48,6 +48,7 @@
public static RElementAccess searchAccess(final ISourceEditor editor, final IRegion region) {
+ // not for sub elements
try {
final IDocument document= editor.getViewer().getDocument();
final RHeuristicTokenScanner scanner= RHeuristicTokenScanner.create(