diff --git a/tests/org.eclipse.xtext.tests/src/org/eclipse/xtext/generator/normalization/GrammarFlatteningTest.xtend b/tests/org.eclipse.xtext.tests/src/org/eclipse/xtext/generator/normalization/GrammarFlatteningTest.xtend
index b1be48188..1953a8ed9 100644
--- a/tests/org.eclipse.xtext.tests/src/org/eclipse/xtext/generator/normalization/GrammarFlatteningTest.xtend
+++ b/tests/org.eclipse.xtext.tests/src/org/eclipse/xtext/generator/normalization/GrammarFlatteningTest.xtend
@@ -314,4 +314,75 @@ class GrammarFlatteningTest extends AbstractXtextTests {
.;'''.toString, serialized)
}
+ @Test def void test_08() throws Exception {
+ var Grammar flattened = getModel(
+ '''
+ grammar com.foo.bar with org.eclipse.xtext.common.Terminals
+ generate myPack 'http://myURI'
+ Rule: name=ID =>( ->child=Rule | ->'keyword')?;
+ ''', true)
+ var String serialized = getSerializer().serialize(flattened)
+ assertEquals('''
+ grammar com.foo.bar hidden(RULE_WS, RULE_ML_COMMENT, RULE_SL_COMMENT)
+
+ norm0_Rule:
+ name=RULE_ID => "keyword"?;
+
+ terminal RULE_ID:
+ "^"? ("a".."z" | "A".."Z" | "_") ("a".."z" | "A".."Z" | "_" | "0".."9")*;
+
+ terminal RULE_INT:
+ "0".."9"+;
+
+ terminal RULE_STRING:
+ "\"" ("\\" . | !("\\" | "\""))* "\"" | "\'" ("\\" . | !("\\" | "\'"))* "\'";
+
+ terminal RULE_ML_COMMENT:
+ "/*"->"*/";
+
+ terminal RULE_SL_COMMENT:
+ "//" !("\n" | "\r")* ("\r"? "\n")?;
+
+ terminal RULE_WS:
+ " " | "\t" | "\r" | "\n"+;
+
+ terminal RULE_ANY_OTHER:
+ .;'''.toString, serialized)
+ }
+
+ @Test def void test_09() throws Exception {
+ var Grammar flattened = getModel(
+ '''
+ grammar com.foo.bar with org.eclipse.xtext.common.Terminals
+ generate myPack 'http://myURI'
+ Rule: name=ID ->( =>child=Rule | =>'keyword')?;
+ ''', true)
+ var String serialized = getSerializer().serialize(flattened)
+ assertEquals('''
+ grammar com.foo.bar hidden(RULE_WS, RULE_ML_COMMENT, RULE_SL_COMMENT)
+
+ norm0_Rule:
+ name=RULE_ID => "keyword"?;
+
+ terminal RULE_ID:
+ "^"? ("a".."z" | "A".."Z" | "_") ("a".."z" | "A".."Z" | "_" | "0".."9")*;
+
+ terminal RULE_INT:
+ "0".."9"+;
+
+ terminal RULE_STRING:
+ "\"" ("\\" . | !("\\" | "\""))* "\"" | "\'" ("\\" . | !("\\" | "\'"))* "\'";
+
+ terminal RULE_ML_COMMENT:
+ "/*"->"*/";
+
+ terminal RULE_SL_COMMENT:
+ "//" !("\n" | "\r")* ("\r"? "\n")?;
+
+ terminal RULE_WS:
+ " " | "\t" | "\r" | "\n"+;
+
+ terminal RULE_ANY_OTHER:
+ .;'''.toString, serialized)
+ }
}