Skip to content

Commit 8940814

Browse files
authored
Merge pull request #456 from codefori/worksofliam/issue451
Implement fix to use **free after line one
2 parents 548ec00 + 79ea2c1 commit 8940814

File tree

2 files changed

+37
-4
lines changed

2 files changed

+37
-4
lines changed

language/parser.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -427,7 +427,7 @@ export default class Parser {
427427
let lineNumber = -1;
428428
let lineIndex = 0;
429429

430-
let isFullyFree = lines[0].toUpperCase().startsWith(`**FREE`);
430+
let isFullyFree = false;
431431
let lineIsFree = false;
432432

433433
/** Used for handling multiline statements */
@@ -643,9 +643,17 @@ export default class Parser {
643643
lineNumber += 1;
644644

645645
if (baseLine.startsWith(`**`) && baseLine[2] !== `*`) {
646-
// Usually is **FREE
647-
if (lineNumber === 0) continue;
648-
// After compile time data, we're done
646+
if (baseLine.toLowerCase() === `**free`) {
647+
// **free only works when set on the first line
648+
if (lineNumber === 0) {
649+
isFullyFree = true;
650+
}
651+
652+
// But it can be put on any other line and ignored.
653+
continue;
654+
}
655+
656+
// If it's something else, we assume it's compile time data
649657
else break;
650658
}
651659

tests/suite/basics.test.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1955,4 +1955,29 @@ test('range issue #453 (full source)', async () => {
19551955
const cache = await parser.getDocs(testSource, contents, { ignoreCache: true, withIncludes: false, collectReferences: true });
19561956

19571957
expect(cache).toBeDefined();
1958+
});
1959+
1960+
test('**free after first line (#451)', async () => {
1961+
const lines = [
1962+
` //** ***`,
1963+
``,
1964+
`**FREE`,
1965+
` //****************************************************************`,
1966+
` //** `,
1967+
` `,
1968+
` dcl-s txtMsg char(10); `,
1969+
` `,
1970+
` dcl-ds person;`,
1971+
` name varchar(30);`,
1972+
` age int(3);`,
1973+
` end-Ds;`,
1974+
``,
1975+
` return;`,
1976+
].join(`\n`);
1977+
1978+
const cache = await parser.getDocs(uri, lines, { ignoreCache: true, withIncludes: false, collectReferences: true });
1979+
1980+
expect(cache).toBeDefined();
1981+
1982+
expect(cache.find(`txtMsg`)).toBeDefined();
19581983
});

0 commit comments

Comments
 (0)