Auto-add allowedStartRules
to test options for changeAST
and reportError
methods if it not defined
This commit is contained in:
parent
75d655409c
commit
3e89534bb7
|
@ -24,19 +24,15 @@ function reportUndefinedRules( ast, options ) {
|
||||||
|
|
||||||
check( ast );
|
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.` );
|
}
|
||||||
|
|
||||||
}
|
} );
|
||||||
|
|
||||||
} );
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -55,6 +55,14 @@ module.exports = function ( chai, utils ) {
|
||||||
|
|
||||||
const ast = parser.parse( grammar );
|
const ast = parser.parse( grammar );
|
||||||
|
|
||||||
|
if ( ! options.allowedStartRules ) {
|
||||||
|
|
||||||
|
options.allowedStartRules = ast.rules.length > 0
|
||||||
|
? [ ast.rules[ 0 ].name ]
|
||||||
|
: [];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
utils.flag( this, "object" )( ast, options );
|
utils.flag( this, "object" )( ast, options );
|
||||||
|
|
||||||
this.assert(
|
this.assert(
|
||||||
|
@ -73,6 +81,14 @@ module.exports = function ( chai, utils ) {
|
||||||
|
|
||||||
const ast = parser.parse( grammar );
|
const ast = parser.parse( grammar );
|
||||||
|
|
||||||
|
if ( ! options.allowedStartRules ) {
|
||||||
|
|
||||||
|
options.allowedStartRules = ast.rules.length > 0
|
||||||
|
? [ ast.rules[ 0 ].name ]
|
||||||
|
: [];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
let passed, result;
|
let passed, result;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
Loading…
Reference in a new issue