[#1324] teach partial class extractor about fragment rules

Signed-off-by: Christian Dietrich <christian.dietrich@itemis.de>
This commit is contained in:
Christian Dietrich 2019-12-12 10:24:11 +01:00
parent 35c544fa81
commit 18e4a6c7ee
3 changed files with 98 additions and 3 deletions

View file

@ -71,6 +71,12 @@ class PartialClassExtractorTest {
}
// $ANTLR end "ruleMySuperDuperEnum"
// $ANTLR start "ruleSuperDuperFragment"
// InternalMyDsl.g:17296:1: ruleSuperDuperFragment[EObject in_current] returns [EObject current=in_current] : (otherlv_0= '{' ( ( (lv_parameters_1_0= ruleCallParameter ) ) otherlv_2= ';' )* otherlv_3= '}' ) ;
public final EObject ruleSuperDuperFragment(EObject in_current) throws RecognitionException {
return null;
}
// $ANTLR end "ruleSuperDuperFragment"
// Delegated rules
}
''',
@ -95,6 +101,7 @@ class PartialClassExtractorTest {
interface InternalMyDslParserSignatures {
EObject ruleMySuperDuperObject() throws RecognitionException;
Enumerator ruleMySuperDuperEnum() throws RecognitionException;
EObject ruleSuperDuperFragment(EObject in_current) throws RecognitionException;
}
@SuppressWarnings("all")
@ -157,7 +164,27 @@ class PartialClassExtractorTest {
}
public class InternalMyDslParser extends InternalMyDslParser3 {
@SuppressWarnings("all")
abstract class InternalMyDslParser4 extends InternalMyDslParser3 {
InternalMyDslParser4(TokenStream input) {
this(input, new RecognizerSharedState());
}
InternalMyDslParser4(TokenStream input, RecognizerSharedState state) {
super(input, state);
}
// $ANTLR start "ruleSuperDuperFragment"
// InternalMyDsl.g:17296:1: ruleSuperDuperFragment[EObject in_current] returns [EObject current=in_current] : (otherlv_0= '{' ( ( (lv_parameters_1_0= ruleCallParameter ) ) otherlv_2= ';' )* otherlv_3= '}' ) ;
public final EObject ruleSuperDuperFragment(EObject in_current) throws RecognitionException {
return null;
}
// $ANTLR end "ruleSuperDuperFragment"
}
public class InternalMyDslParser extends InternalMyDslParser4 {
public InternalMyDslParser(TokenStream input) {

View file

@ -155,6 +155,24 @@ public class PartialClassExtractorTest {
_builder.append(" ");
_builder.newLine();
_builder.append(" ");
_builder.append("// $ANTLR start \"ruleSuperDuperFragment\"");
_builder.newLine();
_builder.append(" ");
_builder.append("// InternalMyDsl.g:17296:1: ruleSuperDuperFragment[EObject in_current] returns [EObject current=in_current] : (otherlv_0= \'{\' ( ( (lv_parameters_1_0= ruleCallParameter ) ) otherlv_2= \';\' )* otherlv_3= \'}\' ) ;");
_builder.newLine();
_builder.append(" ");
_builder.append("public final EObject ruleSuperDuperFragment(EObject in_current) throws RecognitionException {");
_builder.newLine();
_builder.append(" ");
_builder.append("return null;");
_builder.newLine();
_builder.append(" ");
_builder.append("}");
_builder.newLine();
_builder.append(" ");
_builder.append("// $ANTLR end \"ruleSuperDuperFragment\"");
_builder.newLine();
_builder.append(" ");
_builder.append("// Delegated rules");
_builder.newLine();
_builder.append("}");
@ -201,6 +219,9 @@ public class PartialClassExtractorTest {
_builder_1.append(" ");
_builder_1.append("Enumerator ruleMySuperDuperEnum() throws RecognitionException;");
_builder_1.newLine();
_builder_1.append(" ");
_builder_1.append("EObject ruleSuperDuperFragment(EObject in_current) throws RecognitionException;");
_builder_1.newLine();
_builder_1.append("}");
_builder_1.newLine();
_builder_1.newLine();
@ -341,7 +362,54 @@ public class PartialClassExtractorTest {
_builder_1.append("}");
_builder_1.newLine();
_builder_1.newLine();
_builder_1.append("public class InternalMyDslParser extends InternalMyDslParser3 {");
_builder_1.append("@SuppressWarnings(\"all\")");
_builder_1.newLine();
_builder_1.append("abstract class InternalMyDslParser4 extends InternalMyDslParser3 {");
_builder_1.newLine();
_builder_1.newLine();
_builder_1.append(" ");
_builder_1.append("InternalMyDslParser4(TokenStream input) {");
_builder_1.newLine();
_builder_1.append(" ");
_builder_1.append("this(input, new RecognizerSharedState());");
_builder_1.newLine();
_builder_1.append(" ");
_builder_1.append("}");
_builder_1.newLine();
_builder_1.newLine();
_builder_1.append(" ");
_builder_1.append("InternalMyDslParser4(TokenStream input, RecognizerSharedState state) {");
_builder_1.newLine();
_builder_1.append(" ");
_builder_1.append("super(input, state);");
_builder_1.newLine();
_builder_1.append(" ");
_builder_1.append("}");
_builder_1.newLine();
_builder_1.newLine();
_builder_1.append(" ");
_builder_1.append("// $ANTLR start \"ruleSuperDuperFragment\"");
_builder_1.newLine();
_builder_1.append(" ");
_builder_1.append("// InternalMyDsl.g:17296:1: ruleSuperDuperFragment[EObject in_current] returns [EObject current=in_current] : (otherlv_0= \'{\' ( ( (lv_parameters_1_0= ruleCallParameter ) ) otherlv_2= \';\' )* otherlv_3= \'}\' ) ;");
_builder_1.newLine();
_builder_1.append(" ");
_builder_1.append("public final EObject ruleSuperDuperFragment(EObject in_current) throws RecognitionException {");
_builder_1.newLine();
_builder_1.append(" ");
_builder_1.append("return null;");
_builder_1.newLine();
_builder_1.append(" ");
_builder_1.append("}");
_builder_1.newLine();
_builder_1.append(" ");
_builder_1.append("// $ANTLR end \"ruleSuperDuperFragment\"");
_builder_1.newLine();
_builder_1.newLine();
_builder_1.append("}");
_builder_1.newLine();
_builder_1.newLine();
_builder_1.append("public class InternalMyDslParser extends InternalMyDslParser4 {");
_builder_1.newLine();
_builder_1.newLine();
_builder_1.append(" ");

View file

@ -32,7 +32,7 @@ public class PartialClassExtractor {
private final String content;
private final String originalContent;
private static final Pattern SIGNATURE = Pattern.compile("^\\s*public final (void|EObject|Enumerator|AntlrDatatypeRuleToken|Boolean) \\S*\\(\\) throws RecognitionException \\{\\s*$");
private static final Pattern SIGNATURE = Pattern.compile("^\\s*public final (void|EObject|Enumerator|AntlrDatatypeRuleToken|Boolean) \\S*\\((EObject in_current)?\\) throws RecognitionException \\{\\s*$");
private static final String ANTLR_END_MARKER = " // $ANTLR end ";
private static final String ANTLR_START_MARKER = " // $ANTLR start ";