From 76808ab97f7a7a5544fe2886e4c0c49f7aa4ecf9 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Tue, 11 Aug 2026 12:14:31 +0100 Subject: [PATCH] Improve did you mean for asm mnemonics and prefixes --- src/check_asm.cpp | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/check_asm.cpp b/src/check_asm.cpp index 4a6d6e40d..17637a3ad 100644 --- a/src/check_asm.cpp +++ b/src/check_asm.cpp @@ -319,19 +319,26 @@ gb_internal CheckMnemomicResult check_mnemonic_name(AstAsmInstruction *instr, u1 return CheckMnemomic_Prefix; } + ERROR_BLOCK(); if (instr->operands.count == 0) { error(instr->name, "Unknown mnemonic/prefix for this target platform: %%%.*s", LIT(name)); } else { - ERROR_BLOCK(); error(instr->name, "Unknown mnemonic for this target platform: %%%.*s", LIT(name)); - auto dym = did_you_mean_make(heap_allocator(), g_asm_amd64.MNEMONIC_COUNT, name); - defer (did_you_mean_destroy(&dym)); - for (String const &str : g_asm_amd64.mnemonic_strings) { - did_you_mean_append(&dym, str); - } - check_did_you_mean_print(&dym); } + auto dym = did_you_mean_make(heap_allocator(), g_asm_amd64.MNEMONIC_COUNT, name); + defer (did_you_mean_destroy(&dym)); + for (u16 i = g_asm_amd64.M_INVALID+1; i < g_asm_amd64.MNEMONIC_COUNT; i++) { + String str = g_asm_amd64.mnemonic_strings[i]; + did_you_mean_append(&dym, str); + } + if (instr->operands.count == 0) { + for (u16 i = g_asm_amd64.PREFIX_INVALID+1; i < g_asm_amd64.PREFIX_COUNT; i++) { + String str = g_asm_amd64.prefix_strings[i]; + did_you_mean_append(&dym, str); + } + } + check_did_you_mean_print(&dym); return CheckMnemomic_Invalid; }