From ce5f5fffc1c4bc3166aeca9592d47bbbfdda580a Mon Sep 17 00:00:00 2001 From: Amaan Qureshi Date: Sat, 10 Feb 2024 21:11:03 -0500 Subject: [PATCH] chore(generate): dedup and warn about duplicate or invalid rules --- cli/src/generate/dsl.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/cli/src/generate/dsl.js b/cli/src/generate/dsl.js index 0aa367fd..32b961f7 100644 --- a/cli/src/generate/dsl.js +++ b/cli/src/generate/dsl.js @@ -351,7 +351,17 @@ function grammar(baseGrammar, options) { throw new Error("Grammar's inline must be an array of rules."); } - inline = inlineRules.map(symbol => symbol.name); + inline = inlineRules.filter((symbol, index, self) => { + if (self.findIndex(s => s.name === symbol.name) !== index) { + console.log(`Warning: duplicate inline rule '${symbol.name}'`); + return false; + } + if (symbol.name === 'ReferenceError') { + console.log(`Warning: inline rule '${symbol.symbol.name}' is not defined.`); + return false; + } + return true; + }).map(symbol => symbol.name); } let supertypes = baseGrammar.supertypes;