Browse Source

Auto-add `allowedStartRules` to test options for `changeAST` and `reportError` methods if it not defined

master
Mingun 4 years ago
parent
commit
3e89534bb7
  1. 14
      lib/compiler/passes/report-undefined-rules.js
  2. 16
      test/spec/unit/compiler/passes/helpers.js

14
lib/compiler/passes/report-undefined-rules.js

@ -24,19 +24,15 @@ function reportUndefinedRules( ast, options ) {
check( ast );
if ( options.allowedStartRules ) {
options.allowedStartRules.forEach( rule => {
options.allowedStartRules.forEach( rule => {
if ( ! asts.findRule( ast, rule ) ) {
if ( ! asts.findRule( ast, rule ) ) {
throw new GrammarError( `Start rule "${ rule }" is not defined.` );
throw new GrammarError( `Start rule "${ rule }" is not defined.` );
}
} );
}
}
} );
}

16
test/spec/unit/compiler/passes/helpers.js

@ -55,6 +55,14 @@ module.exports = function ( chai, utils ) {
const ast = parser.parse( grammar );
if ( ! options.allowedStartRules ) {
options.allowedStartRules = ast.rules.length > 0
? [ ast.rules[ 0 ].name ]
: [];
}
utils.flag( this, "object" )( ast, options );
this.assert(
@ -73,6 +81,14 @@ module.exports = function ( chai, utils ) {
const ast = parser.parse( grammar );
if ( ! options.allowedStartRules ) {
options.allowedStartRules = ast.rules.length > 0
? [ ast.rules[ 0 ].name ]
: [];
}
let passed, result;
try {

Loading…
Cancel
Save