From 784393bbc78342197ac26ad8e9b236f55bcc74bb Mon Sep 17 00:00:00 2001 From: Matt Godbolt Date: Fri, 27 Jan 2023 09:14:31 -0600 Subject: [PATCH] Convert asm-raw to typescript (#4647) --- lib/parsers/{asm-raw.js => asm-raw.ts} | 9 ++++++--- lib/parsers/asmregex.ts | 5 +++-- 2 files changed, 9 insertions(+), 5 deletions(-) rename lib/parsers/{asm-raw.js => asm-raw.ts} (89%) diff --git a/lib/parsers/asm-raw.js b/lib/parsers/asm-raw.ts similarity index 89% rename from lib/parsers/asm-raw.js rename to lib/parsers/asm-raw.ts index 54a8235f4af..3997d0c4a39 100644 --- a/lib/parsers/asm-raw.js +++ b/lib/parsers/asm-raw.ts @@ -22,11 +22,14 @@ // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. +import {AsmResultLink, ParsedAsmResult, ParsedAsmResultLine} from '../../types/asmresult/asmresult.interfaces'; +import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces'; + import {AsmRegex} from './asmregex'; export class AsmRaw extends AsmRegex { - processBinaryAsm(asm, filters) { - const result = []; + processBinaryAsm(asm: string, filters: ParseFiltersAndOutputOptions): ParsedAsmResult { + const result: ParsedAsmResultLine[] = []; const asmLines = asm.split('\n'); const asmOpcodeRe = /^\s*([\da-f]+):\s*(([\da-f]{2} ?)+)\s*(.*)/; const labelRe = /^([\da-f]+)\s+<([^>]+)>:$/; @@ -55,7 +58,7 @@ export class AsmRaw extends AsmRegex { const address = parseInt(match[1], 16); const opcodes = match[2].split(' ').filter(Boolean); const disassembly = ' ' + AsmRegex.filterAsmLine(match[4], filters); - let links = null; + let links: AsmResultLink[] | undefined; const destMatch = line.match(destRe); if (destMatch) { links = [ diff --git a/lib/parsers/asmregex.ts b/lib/parsers/asmregex.ts index 9f8e82745f4..d2f62642447 100644 --- a/lib/parsers/asmregex.ts +++ b/lib/parsers/asmregex.ts @@ -22,6 +22,7 @@ // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. +import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces'; import * as utils from '../utils'; const findQuotes = /(.*?)("(?:[^"\\]|\\.)*")(.*)/; @@ -33,7 +34,7 @@ export class AsmRegex { this.labelDef = /^(?:.proc\s+)?([\w$.@]+):/i; } - static squashHorizontalWhitespace(line, atStart) { + static squashHorizontalWhitespace(line: string, atStart: boolean): string { const quotes = line.match(findQuotes); if (quotes) { return ( @@ -45,7 +46,7 @@ export class AsmRegex { return utils.squashHorizontalWhitespace(line, atStart); } - static filterAsmLine(line, filters) { + static filterAsmLine(line: string, filters: ParseFiltersAndOutputOptions): string { if (!filters.trim) return line; return this.squashHorizontalWhitespace(line, true); }