From 185e7aa4fbc89fb12dfd6f89aec1b0aaafcececb Mon Sep 17 00:00:00 2001 From: Patrick Behr Date: Sun, 8 Jan 2023 10:17:18 -0800 Subject: [PATCH] Do not require parameters for procedures found in control options --- server/src/language/linter.js | 5 ++++- tests/suite/linter.js | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/server/src/language/linter.js b/server/src/language/linter.js index 863a3983..67377c4b 100644 --- a/server/src/language/linter.js +++ b/server/src/language/linter.js @@ -1008,7 +1008,10 @@ export default class Linter { const definedProcedure = globalProcs.find(proc => proc.name.toUpperCase() === upperName); if (definedProcedure) { let requiresBlock = false; - if (statement.length <= i + 1) { + // Don't require parms for procedures found in Ctl-Opt + if (statement[0].value.toUpperCase() === `CTL-OPT`) { + // do nothing + } else if (statement.length <= i + 1) { requiresBlock = true; } else if (statement[i + 1].type !== `openbracket`) { requiresBlock = true; diff --git a/tests/suite/linter.js b/tests/suite/linter.js index a1301453..afd25893 100644 --- a/tests/suite/linter.js +++ b/tests/suite/linter.js @@ -972,6 +972,24 @@ exports.linter8 = async () => { }, `Error not as expected`); }; +exports.linter_Do_Not_Require_Parameters_For_Control_Options = async () => { + const lines = [ + `**FREE`, + `ctl-opt main(main) ;`, + `dcl-proc main ;`, + ` return ;`, + `end-proc main ;`, + ].join(`\n`); + + const parser = parserSetup(); + const cache = await parser.getDocs(uri, lines); + const { errors } = Linter.getErrors({ uri, content: lines }, { + RequiresParameter: true + }, cache); + + assert.strictEqual(errors.length, 0, `Unexpected RequiresParamters error`); +}; + /** * Check that local variables are not in global scope */