Skip to content

Commit 0ed394f

Browse files
authored
Merge pull request #340 from codefori/fix/remove_some_rules_for_includes
Fix linter behavior for RPGLEINC files
2 parents e97f442 + cd82165 commit 0ed394f

File tree

4 files changed

+34
-5
lines changed

4 files changed

+34
-5
lines changed

language/linter.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ import Document from "./document";
99
import { IssueRange, Offset, Rules, SelectBlock } from "./parserTypes";
1010
import Declaration from "./models/declaration";
1111

12+
const BANNED_FROM_INCLUDES = [`NoUnreferenced`];
13+
const INCLUDE_EXTENSIONS = [`rpgleinc`, `rpgleh`];
14+
1215
const errorText = {
1316
'BlankStructNamesCheck': `Struct names cannot be blank (\`*N\`).`,
1417
'QualifiedCheck': `Struct names must be qualified (\`QUALIFIED\`).`,
@@ -60,6 +63,14 @@ export default class Linter {
6063
const indentEnabled = rules.indent !== undefined;
6164
const indent = rules.indent || 2;
6265

66+
const uriExtension = data.uri.split('.').pop().toLowerCase();
67+
68+
if (INCLUDE_EXTENSIONS.includes(uriExtension)) {
69+
for (const banned of BANNED_FROM_INCLUDES) {
70+
rules[banned] = false;
71+
}
72+
}
73+
6374
// Excluding indent
6475
const ruleCount = Object.keys(rules).length - (rules.indent ? 1 : 0);
6576

language/models/cache.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,6 @@ export default class Cache {
191191
const currentProcedure = this.procedures.find(proc => lineNumber >= proc.range.start && lineNumber <= proc.range.end);
192192

193193
if (currentProcedure && currentProcedure.scope) {
194-
console.log(currentProcedure.scope.constants);
195194
const localDef = currentProcedure.scope.constants.find(def => def.keyword[upperValue] === true);
196195

197196
if (localDef) {

tests/suite/basics.test.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1162,7 +1162,6 @@ test(`exec_14`, async () => {
11621162

11631163
const cache = await parser.getDocs(uri, lines, {withIncludes: true, ignoreCache: true});
11641164

1165-
console.log(cache.sqlReferences);
11661165
expect(cache.sqlReferences.length).toBe(1);
11671166
expect(cache.sqlReferences[0].name).toBe(`table1`);
11681167
});
@@ -1233,7 +1232,6 @@ test('keywords over multiple lines', async () => {
12331232
expect(invoiceParm.keyword[`CONST`]).toBe(true);
12341233

12351234
const detailParm = invoice_get_invoice.subItems[2];
1236-
console.log(detailParm);
12371235
expect(detailParm.name).toBe(`details`);
12381236
expect(detailParm.keyword[`LIKEDS`]).toBe(`INVOICE_GET_INVOICE_SALES_DETAIL_DS`);
12391237
expect(detailParm.keyword[`DIM`]).toBe(`INVOICE_MAX_DETAILS`);

tests/suite/linter.test.ts

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { test, expect } from "vitest";
66

77
const parser = setupParser();
88
const uri = `source.rpgle`;
9+
const includeUri = `source.rpgleinc`;
910

1011
test("linter_indent_multi_1", async () => {
1112
const lines = [
@@ -3389,7 +3390,6 @@ test('constant replace picking up wrong variable #330', async () => {
33893390
StringLiteralDupe: true
33903391
}, cache);
33913392

3392-
console.log(errors);
33933393
expect(errors.length).toBe(2);
33943394

33953395
expect(errors[0]).toMatchObject({
@@ -3403,4 +3403,25 @@ test('constant replace picking up wrong variable #330', async () => {
34033403
type: 'StringLiteralDupe',
34043404
newValue: undefined
34053405
});
3406-
})
3406+
});
3407+
3408+
test('Linter running on rpgleinc', async () => {
3409+
const lines = [
3410+
`**free`,
3411+
`Dcl-S CustomerName_t varchar(40) template;`,
3412+
].join(`\n`);
3413+
3414+
const cache = await parser.getDocs(includeUri, lines, { ignoreCache: true, withIncludes: true });
3415+
const { errors } = Linter.getErrors({ uri: includeUri, content: lines }, {
3416+
IncorrectVariableCase: true,
3417+
NoUnreferenced: true,
3418+
SpecificCasing: [{operation: "dcl-s", expected: `DCL-S`}]
3419+
}, cache);
3420+
3421+
expect(errors.length).toBe(1);
3422+
expect(errors[0]).toMatchObject({
3423+
offset: { position: 7, end: 12 },
3424+
type: 'SpecificCasing',
3425+
newValue: 'DCL-S'
3426+
});
3427+
});

0 commit comments

Comments
 (0)