@@ -717,6 +717,28 @@ void main() {
717717 expect (results, isEmpty);
718718 });
719719 });
720+ group ('duplicate parser' , () {
721+ const rules = [linter_rules.DuplicateParser ()];
722+ test ('with issue' , () {
723+ final parser = seq2 (digit (), digit ());
724+ final results = linter (parser, rules: rules);
725+ expect (results, [
726+ isLinterIssue (
727+ parser: parser.children[0 ],
728+ type: LinterType .info,
729+ title: 'Duplicate parser' ,
730+ ),
731+ ]);
732+ });
733+ test ('without issue' , () {
734+ final parser = seq2 (
735+ digit (message: 'first' ),
736+ digit (message: 'second' ),
737+ );
738+ final results = linter (parser, rules: rules);
739+ expect (results, isEmpty);
740+ });
741+ });
720742 group ('left recursion' , () {
721743 const rules = [linter_rules.LeftRecursion ()];
722744 test ('with issue' , () {
@@ -1219,12 +1241,15 @@ void main() {
12191241 group ('remove duplicate' , () {
12201242 const rules = [optimize_rules.RemoveDuplicate ()];
12211243 test ('with duplicate' , () {
1222- final parser = lowercase () & lowercase ( );
1244+ final parser = seq2 ( digit (), digit () );
12231245 final result = optimize (parser, rules: rules);
12241246 expect (result.children.first, same (result.children.last));
12251247 });
12261248 test ('without duplicate' , () {
1227- final parser = lowercase () & lowercase (message: 'lower' );
1249+ final parser = seq2 (
1250+ digit (message: 'first' ),
1251+ digit (message: 'second' ),
1252+ );
12281253 final result = optimize (
12291254 parser,
12301255 rules: rules,
0 commit comments