From e101883779359970577da91e91c6e956e9a1df69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miro=20Sp=C3=B6nemann?= Date: Mon, 11 May 2015 14:28:10 +0200 Subject: [PATCH] [xtext] Improved performance of GrammarUtil.findRuleForName MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Miro Spönemann --- .../src/org/eclipse/xtext/GrammarUtil.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) 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;