diff --git a/server/src/language/linter.js b/server/src/language/linter.js index 67377c4b..c0d5fe53 100644 --- a/server/src/language/linter.js +++ b/server/src/language/linter.js @@ -1009,7 +1009,7 @@ export default class Linter { if (definedProcedure) { let requiresBlock = false; // Don't require parms for procedures found in Ctl-Opt - if (statement[0].value.toUpperCase() === `CTL-OPT`) { + if (statement[0].value.toUpperCase() === `CTL-OPT` || statement[0].type === `directive`) { // do nothing } else if (statement.length <= i + 1) { requiresBlock = true; diff --git a/tests/suite/linter.js b/tests/suite/linter.js index afd25893..a9227583 100644 --- a/tests/suite/linter.js +++ b/tests/suite/linter.js @@ -990,6 +990,26 @@ exports.linter_Do_Not_Require_Parameters_For_Control_Options = async () => { assert.strictEqual(errors.length, 0, `Unexpected RequiresParamters error`); }; +exports.linter_Do_Not_Require_Parameters_For_Compile_Directives = async () => { + const lines = [ + `**FREE`, + `/if defined(MYPROCEDURE);`, + `/eof;`, + `/endif;`, + `/define ;`, + `dcl-pr MYPROCEDURE;`, + `end-pr;`, + ].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 */