From 38e7869b3a91ff8d6cc02a5a39d1923e258473ba Mon Sep 17 00:00:00 2001 From: Ivan Kochurkin Date: Mon, 20 Jun 2022 18:13:19 +0300 Subject: [PATCH] Extract prepareGrammars method Signed-off-by: Ivan Kochurkin --- .../antlr/v4/test/runtime/RuntimeTests.java | 70 ++++++++++--------- 1 file changed, 37 insertions(+), 33 deletions(-) diff --git a/runtime-testsuite/test/org/antlr/v4/test/runtime/RuntimeTests.java b/runtime-testsuite/test/org/antlr/v4/test/runtime/RuntimeTests.java index 2659e61556..314a8ad051 100644 --- a/runtime-testsuite/test/org/antlr/v4/test/runtime/RuntimeTests.java +++ b/runtime-testsuite/test/org/antlr/v4/test/runtime/RuntimeTests.java @@ -124,40 +124,8 @@ private static String test(RuntimeTestDescriptor descriptor, RuntimeRunner runne FileUtils.mkdir(runner.getTempDirPath()); - STGroup targetTemplates = cachedTargetTemplates.get(targetName); - if (targetTemplates == null) { - synchronized (cachedTargetTemplates) { - targetTemplates = cachedTargetTemplates.get(targetName); - if (targetTemplates == null) { - ClassLoader classLoader = RuntimeTests.class.getClassLoader(); - URL templates = classLoader.getResource("templates/" + targetName + ".test.stg"); - assert templates != null; - targetTemplates = new STGroupFile(templates, "UTF-8", '<', '>'); - targetTemplates.registerRenderer(String.class, rendered); - cachedTargetTemplates.put(targetName, targetTemplates); - } - } - } - - // write out any slave grammars - List> slaveGrammars = descriptor.slaveGrammars; - if ( slaveGrammars!=null ) { - for (Pair spair : slaveGrammars) { - STGroup g = new STGroup('<', '>'); - g.registerRenderer(String.class, rendered); - g.importTemplates(targetTemplates); - ST grammarST = new ST(g, spair.b); - writeFile(runner.getTempDirPath(), spair.a + ".g4", grammarST.render()); - } - } - String grammarName = descriptor.grammarName; - String grammar = descriptor.grammar; - STGroup g = new STGroup('<', '>'); - g.importTemplates(targetTemplates); - g.registerRenderer(String.class, rendered); - ST grammarST = new ST(g, grammar); - grammar = grammarST.render(); + String grammar = prepareGrammars(descriptor, runner); String lexerName, parserName; boolean useListenerOrVisitor; @@ -193,6 +161,42 @@ private static String test(RuntimeTestDescriptor descriptor, RuntimeRunner runne return assertCorrectOutput(descriptor, targetName, result); } + private static String prepareGrammars(RuntimeTestDescriptor descriptor, RuntimeRunner runner) { + String targetName = runner.getLanguage(); + STGroup targetTemplates = cachedTargetTemplates.get(targetName); + if (targetTemplates == null) { + synchronized (cachedTargetTemplates) { + targetTemplates = cachedTargetTemplates.get(targetName); + if (targetTemplates == null) { + ClassLoader classLoader = RuntimeTests.class.getClassLoader(); + URL templates = classLoader.getResource("templates/" + targetName + ".test.stg"); + assert templates != null; + targetTemplates = new STGroupFile(templates, "UTF-8", '<', '>'); + targetTemplates.registerRenderer(String.class, rendered); + cachedTargetTemplates.put(targetName, targetTemplates); + } + } + } + + // write out any slave grammars + List> slaveGrammars = descriptor.slaveGrammars; + if ( slaveGrammars!=null ) { + for (Pair spair : slaveGrammars) { + STGroup g = new STGroup('<', '>'); + g.registerRenderer(String.class, rendered); + g.importTemplates(targetTemplates); + ST grammarST = new ST(g, spair.b); + writeFile(runner.getTempDirPath(), spair.a + ".g4", grammarST.render()); + } + } + + STGroup g = new STGroup('<', '>'); + g.importTemplates(targetTemplates); + g.registerRenderer(String.class, rendered); + ST grammarST = new ST(g, descriptor.grammar); + return grammarST.render(); + } + private static String assertCorrectOutput(RuntimeTestDescriptor descriptor, String targetName, State state) { ExecutedState executedState; if (state instanceof ExecutedState) {