From e80154ebafe94f1ad69c35551adfa3c19cc59187 Mon Sep 17 00:00:00 2001 From: "Congcong Cai (EE-CN-42)" Date: Mon, 27 Jun 2022 15:39:39 +0800 Subject: [PATCH 1/4] feat: add `--disableWarning` option to disable compilation warning --- cli/index.js | 22 ++++++++++++++-------- cli/options.json | 9 ++++++++- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/cli/index.js b/cli/index.js index ab5a6eb179..daa19ed76f 100644 --- a/cli/index.js +++ b/cli/index.js @@ -615,7 +615,7 @@ export async function main(argv, options) { stats.parseTime += stats.end(begin); } } - const numErrors = checkDiagnostics(program, stderr, options.reportDiagnostic, stderrColors.enabled); + const numErrors = checkDiagnostics(program, stderr, opts.disableWarning, options.reportDiagnostic, stderrColors.enabled); if (numErrors) { const err = Error(`${numErrors} parse error(s)`); err.stack = err.message; // omit stack @@ -724,7 +724,7 @@ export async function main(argv, options) { ? assemblyscript.getBinaryenModuleRef(module) : module.ref ); - var numErrors = checkDiagnostics(program, stderr, options.reportDiagnostic, stderrColors.enabled); + var numErrors = checkDiagnostics(program, stderr, opts.disableWarning, options.reportDiagnostic, stderrColors.enabled); if (numErrors) { const err = Error(`${numErrors} compile error(s)`); err.stack = err.message; // omit stack @@ -737,7 +737,7 @@ export async function main(argv, options) { if (error) return prepareResult(error); } - numErrors = checkDiagnostics(program, stderr, options.reportDiagnostic, stderrColors.enabled); + numErrors = checkDiagnostics(program, stderr, opts.disableWarning, options.reportDiagnostic, stderrColors.enabled); if (numErrors) { const err = Error(`${numErrors} afterCompile error(s)`); err.stack = err.message; // omit stack @@ -1117,17 +1117,23 @@ async function getConfig(file, baseDir, readFile) { } /** Checks diagnostics emitted so far for errors. */ -export function checkDiagnostics(program, stderr, reportDiagnostic, useColors) { +export function checkDiagnostics(program, stderr, disableWarning, reportDiagnostic, useColors) { if (typeof useColors === "undefined" && stderr) useColors = stderr.isTTY; var numErrors = 0; do { let diagnostic = assemblyscript.nextDiagnostic(program); if (!diagnostic) break; if (stderr) { - stderr.write( - assemblyscript.formatDiagnostic(diagnostic, useColors, true) + - EOL + EOL - ); + const checkWarningPrint = (diagnostic) => { + const code = assemblyscript.getDiagnosticCode(diagnostic); + if (disableWarning === undefined) return true; + if (disableWarning.length === 0) return false; + if (disableWarning.includes(code)) return false; + return true; + }; + if (assemblyscript.isError(diagnostic) || checkWarningPrint(diagnostic)) { + stderr.write(assemblyscript.formatDiagnostic(diagnostic, useColors, true) + EOL + EOL); + } } if (reportDiagnostic) { function wrapRange(range) { diff --git a/cli/options.json b/cli/options.json index c68bc7e72a..fb59aba39a 100644 --- a/cli/options.json +++ b/cli/options.json @@ -282,7 +282,7 @@ }, "runPasses": { "category": "Binaryen", - "description": [ + "description": [ "Specifies additional Binaryen passes to run after other", "optimizations, if any. See: Binaryen/src/passes/pass.cpp" ], @@ -313,6 +313,13 @@ "type": "b", "default": false }, + "disableWarning": { + "description": [ + "Disables specified warning output", + "not define specified warning number will disable all kinds of warning" + ], + "type": "I" + }, "noEmit": { "description": "Performs compilation as usual but does not emit code.", "type": "b", From c45bfdf1dbf2e6b568d78b4ba8690f64be6a6f56 Mon Sep 17 00:00:00 2001 From: Congcong Cai Date: Mon, 27 Jun 2022 16:40:51 +0800 Subject: [PATCH 2/4] update cli/index.js Co-authored-by: Max Graey --- cli/index.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/cli/index.js b/cli/index.js index daa19ed76f..b118c93375 100644 --- a/cli/index.js +++ b/cli/index.js @@ -1125,11 +1125,10 @@ export function checkDiagnostics(program, stderr, disableWarning, reportDiagnost if (!diagnostic) break; if (stderr) { const checkWarningPrint = (diagnostic) => { + if (disableWarning == null) return true; + if (!disableWarning.length) return false; const code = assemblyscript.getDiagnosticCode(diagnostic); - if (disableWarning === undefined) return true; - if (disableWarning.length === 0) return false; - if (disableWarning.includes(code)) return false; - return true; + return !disableWarning.includes(code); }; if (assemblyscript.isError(diagnostic) || checkWarningPrint(diagnostic)) { stderr.write(assemblyscript.formatDiagnostic(diagnostic, useColors, true) + EOL + EOL); From 98e4ef9b2a9d6dbcc1c9b0ec4346a73b31ef5f42 Mon Sep 17 00:00:00 2001 From: "Congcong Cai (EE-CN-42)" Date: Mon, 27 Jun 2022 22:45:40 +0800 Subject: [PATCH 3/4] update naming --- cli/index.js | 4 ++-- cli/options.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cli/index.js b/cli/index.js index b118c93375..d51848385b 100644 --- a/cli/index.js +++ b/cli/index.js @@ -1124,13 +1124,13 @@ export function checkDiagnostics(program, stderr, disableWarning, reportDiagnost let diagnostic = assemblyscript.nextDiagnostic(program); if (!diagnostic) break; if (stderr) { - const checkWarningPrint = (diagnostic) => { + const isDisabledWarning = (diagnostic) => { if (disableWarning == null) return true; if (!disableWarning.length) return false; const code = assemblyscript.getDiagnosticCode(diagnostic); return !disableWarning.includes(code); }; - if (assemblyscript.isError(diagnostic) || checkWarningPrint(diagnostic)) { + if (assemblyscript.isError(diagnostic) || isDisabledWarning(diagnostic)) { stderr.write(assemblyscript.formatDiagnostic(diagnostic, useColors, true) + EOL + EOL); } } diff --git a/cli/options.json b/cli/options.json index fb59aba39a..3550b3d1dd 100644 --- a/cli/options.json +++ b/cli/options.json @@ -315,8 +315,8 @@ }, "disableWarning": { "description": [ - "Disables specified warning output", - "not define specified warning number will disable all kinds of warning" + "Disables warnings matching the given diagnostic code.", + "If no diagnostic code is given, all warnings are disabled." ], "type": "I" }, From 4e032b5c1de44868c8eb3b3b963b643bed15a7bf Mon Sep 17 00:00:00 2001 From: "Congcong Cai (EE-CN-42)" Date: Tue, 28 Jun 2022 09:25:48 +0800 Subject: [PATCH 4/4] update --- cli/index.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cli/index.js b/cli/index.js index d51848385b..56b2a0a0ad 100644 --- a/cli/index.js +++ b/cli/index.js @@ -1125,12 +1125,12 @@ export function checkDiagnostics(program, stderr, disableWarning, reportDiagnost if (!diagnostic) break; if (stderr) { const isDisabledWarning = (diagnostic) => { - if (disableWarning == null) return true; - if (!disableWarning.length) return false; + if (disableWarning == null) return false; + if (!disableWarning.length) return true; const code = assemblyscript.getDiagnosticCode(diagnostic); - return !disableWarning.includes(code); + return disableWarning.includes(code); }; - if (assemblyscript.isError(diagnostic) || isDisabledWarning(diagnostic)) { + if (assemblyscript.isError(diagnostic) || !isDisabledWarning(diagnostic)) { stderr.write(assemblyscript.formatDiagnostic(diagnostic, useColors, true) + EOL + EOL); } }