Skip to content

Commit

Permalink
Extract prepareGrammars method
Browse files Browse the repository at this point in the history
Signed-off-by: Ivan Kochurkin <[email protected]>
  • Loading branch information
KvanTTT committed Jun 20, 2022
1 parent 17f9e9d commit 38e7869
Showing 1 changed file with 37 additions and 33 deletions.
70 changes: 37 additions & 33 deletions runtime-testsuite/test/org/antlr/v4/test/runtime/RuntimeTests.java
Original file line number Diff line number Diff line change
Expand Up @@ -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<Pair<String, String>> slaveGrammars = descriptor.slaveGrammars;
if ( slaveGrammars!=null ) {
for (Pair<String, String> 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;
Expand Down Expand Up @@ -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<Pair<String, String>> slaveGrammars = descriptor.slaveGrammars;
if ( slaveGrammars!=null ) {
for (Pair<String, String> 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) {
Expand Down

0 comments on commit 38e7869

Please sign in to comment.