Fixed NodeModelUtils wrt to parser rule fragments

This commit is contained in:
Sebastian Zarnekow 2015-10-07 20:48:35 +02:00
parent 8764c05e56
commit 319163fb7c
2 changed files with 17 additions and 1 deletions

View file

@ -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;

View file

@ -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<Param>: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);