diff --git a/plugins/org.eclipse.xtext/src/org/eclipse/xtext/GrammarUtil.java b/plugins/org.eclipse.xtext/src/org/eclipse/xtext/GrammarUtil.java index bb91680b1..736f242b6 100644 --- a/plugins/org.eclipse.xtext/src/org/eclipse/xtext/GrammarUtil.java +++ b/plugins/org.eclipse.xtext/src/org/eclipse/xtext/GrammarUtil.java @@ -247,10 +247,15 @@ public class GrammarUtil { public static AbstractRule findRuleForName(Grammar grammar, String ruleName) { if (ruleName == null) return null; - List rules = allRules(grammar); - for (AbstractRule abstractRule : rules) { - if (ruleName.equals(abstractRule.getName())) { - return abstractRule; + for (AbstractRule rule : grammar.getRules()) { + if (ruleName.equals(rule.getName())) { + return rule; + } + } + for (Grammar usedGrammar : grammar.getUsedGrammars()) { + AbstractRule rule = findRuleForName(usedGrammar, ruleName); + if (rule != null) { + return rule; } } return null;