From 319163fb7c26ff0614aef800aaf1adce4736b3ee Mon Sep 17 00:00:00 2001 From: Sebastian Zarnekow Date: Wed, 7 Oct 2015 20:48:35 +0200 Subject: [PATCH] Fixed NodeModelUtils wrt to parser rule fragments --- .../xtext/nodemodel/util/NodeModelUtils.java | 2 +- .../xtext/nodemodel/util/NodeModelUtilsTest.java | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/plugins/org.eclipse.xtext/src/org/eclipse/xtext/nodemodel/util/NodeModelUtils.java b/plugins/org.eclipse.xtext/src/org/eclipse/xtext/nodemodel/util/NodeModelUtils.java index 80000b15d..c72f388cd 100644 --- a/plugins/org.eclipse.xtext/src/org/eclipse/xtext/nodemodel/util/NodeModelUtils.java +++ b/plugins/org.eclipse.xtext/src/org/eclipse/xtext/nodemodel/util/NodeModelUtils.java @@ -254,7 +254,7 @@ public class NodeModelUtils { } sibling = sibling.getNextSibling(); } - } else { + } else if (!GrammarUtil.isEObjectFragmentRuleCall(grammarElement)) { EObject result = findActualSemanticObjectInChildren(node, grammarElement); if (result != null) return result; diff --git a/tests/org.eclipse.xtext.tests/src/org/eclipse/xtext/nodemodel/util/NodeModelUtilsTest.java b/tests/org.eclipse.xtext.tests/src/org/eclipse/xtext/nodemodel/util/NodeModelUtilsTest.java index fa4546266..28022c009 100644 --- a/tests/org.eclipse.xtext.tests/src/org/eclipse/xtext/nodemodel/util/NodeModelUtilsTest.java +++ b/tests/org.eclipse.xtext.tests/src/org/eclipse/xtext/nodemodel/util/NodeModelUtilsTest.java @@ -182,6 +182,22 @@ public class NodeModelUtilsTest extends AbstractXtextTests { assertTrue(object instanceof ParserRule); } + @Test public void testFindActualSemanticObjectFor_10() throws Exception { + String grammarString = "grammar foo.Bar with org.eclipse.xtext.common.Terminals generate foo 'bar' Model:name=ID;"; + Grammar grammar = (Grammar) getModel(grammarString); + ILeafNode ruleName = NodeModelUtils.findLeafNodeAtOffset(NodeModelUtils.getNode(grammar), grammarString.indexOf("Model")); + EObject object = NodeModelUtils.findActualSemanticObjectFor(ruleName); + assertTrue(object instanceof ParserRule); + } + + @Test public void testFindActualSemanticObjectFor_11() throws Exception { + String grammarString = "grammar foo.Bar with org.eclipse.xtext.common.Terminals generate foo 'bar' Model:name=ID;"; + Grammar grammar = (Grammar) getModel(grammarString); + ILeafNode lessThan = NodeModelUtils.findLeafNodeAtOffset(NodeModelUtils.getNode(grammar), grammarString.indexOf("<")); + EObject object = NodeModelUtils.findActualSemanticObjectFor(lessThan); + assertTrue(object instanceof ParserRule); + } + @Test public void testCompactDump_1() throws Exception { String grammarString = "grammar foo.Bar with org.eclipse.xtext.common.Terminals generate foo 'bar' Model:name=ID;"; Grammar grammar = (Grammar) getModel(grammarString);