New linter fixes

This commit is contained in:
Will Scullin 2022-06-25 08:26:46 -07:00
parent d67f3d8086
commit fe955fba41
No known key found for this signature in database
GPG Key ID: 26DCD1042C6638CD
2 changed files with 23 additions and 25 deletions

View File

@ -61,7 +61,7 @@ class LineBuffer implements IterableIterator<string> {
return new LineBuffer(this.line, this.curChar);
}
next(): IteratorResult<string> {
next(): IteratorResult<string, string | undefined> {
if (this.atEnd()) {
return { done: true, value: undefined };
}
@ -123,8 +123,6 @@ class LineBuffer implements IterableIterator<string> {
export default class ApplesoftCompiler {
private lines: Map<number, byte[]> = new Map();
constructor() { }
/**
* Loads an AppleSoft BASIC program into memory.
*
@ -197,7 +195,7 @@ export default class ApplesoftCompiler {
// Backup to before the token
lineBuffer.backup();
// and emit the 'A' (upper- or lower-case)
return lineBuffer.next().value.charCodeAt(0);
return lineBuffer.next().value?.charCodeAt(0) ?? 0;
}
}
return STRING_TO_TOKEN[possibleToken];
@ -205,7 +203,7 @@ export default class ApplesoftCompiler {
}
// If not a token, output the character upper-cased
return lineBuffer.next().value.toUpperCase().charCodeAt(0);
return lineBuffer.next().value?.toUpperCase().charCodeAt(0) ?? 0;
}
private compileLine(line: string | null | undefined) {
@ -306,7 +304,7 @@ export default class ApplesoftCompiler {
const lineNumbers = [...this.lines.keys()].sort();
for (const lineNo of lineNumbers) {
const lineBytes = this.lines.get(lineNo)!;
const lineBytes = this.lines.get(lineNo) || [];
const nextLineAddr = programStart + result.length + 4
+ lineBytes.length + 1; // +1 for the zero at end of line
result.push(nextLineAddr & 0xff, nextLineAddr >> 8);

View File

@ -79,12 +79,12 @@ export default class ApplesoftDecompiler {
let offset = 0;
let nextLineAddr = this.wordAt(offset);
let nextLineNo = this.wordAt(offset + 2);
while (nextLineAddr != 0 && nextLineNo < from) {
while (nextLineAddr !== 0 && nextLineNo < from) {
offset = nextLineAddr;
nextLineAddr = this.wordAt(offset);
nextLineNo = this.wordAt(offset + 2);
}
while (nextLineAddr != 0 && nextLineNo <= to) {
while (nextLineAddr !== 0 && nextLineNo <= to) {
callback(offset + 2);
offset = nextLineAddr - this.base;
nextLineAddr = this.wordAt(offset);
@ -105,14 +105,14 @@ export default class ApplesoftDecompiler {
if (options.apple2 === 'e') {
line += ' '; // D6F9: JSR SPCLIN
}
line += lineNo + ' '; // D6FC, always 1 space after line number
line += `${lineNo} `; // D6FC, always 1 space after line number
offset += 2;
// In the original ROM, the line length is checked immediately
// after the line number is printed. For simplicity, this method
// always assumes that there is space for one token—which would
// have been the case on a realy Apple.
while (this.program[offset] != 0) {
while (this.program[offset] !== 0) {
const token = this.program[offset];
if (token >= 0x80 && token <= 0xea) {
line += ' '; // D750, always put a space in front of token
@ -193,7 +193,7 @@ export default class ApplesoftDecompiler {
spaceIf = (nextToken: string) => /^\d/.test(nextToken);
offset += 2;
while (this.program[offset] != 0) {
while (this.program[offset] !== 0) {
const token = this.program[offset];
let tokenString: string;
if (token >= 0x80 && token <= 0xea) {
@ -235,10 +235,10 @@ export default class ApplesoftDecompiler {
let spaceIf: (char: byte) => boolean = () => false;
const lineNo = this.wordAt(offset);
result += lineNo + ' ';
result += `${lineNo} `;
offset += 2;
while (this.program[offset] != 0) {
while (this.program[offset] !== 0) {
const token = this.program[offset];
let tokenString: string;
if (token >= 0x80 && token <= 0xea) {