From 897697d208880ca216606ae320fc3f504ffedd53 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Tue, 30 Jul 2024 13:09:55 +0700 Subject: [PATCH] chore(developer): support filename field in kmcmplib compiler messages Relates-to: #10866 --- developer/src/kmcmplib/src/Compiler.cpp | 4 +--- developer/src/kmcmplib/src/CompilerErrors.cpp | 6 ++++-- developer/src/kmcmplib/src/CompilerErrors.h | 3 ++- developer/src/kmcmplib/src/CompilerInterfaces.cpp | 7 ++++--- developer/src/kmcmplib/src/kmcmplib.h | 2 +- 5 files changed, 12 insertions(+), 10 deletions(-) diff --git a/developer/src/kmcmplib/src/Compiler.cpp b/developer/src/kmcmplib/src/Compiler.cpp index 16304aa1a7..12d4b62607 100644 --- a/developer/src/kmcmplib/src/Compiler.cpp +++ b/developer/src/kmcmplib/src/Compiler.cpp @@ -233,9 +233,7 @@ enum LinePrefixType { lptNone, lptKeymanAndKeymanWeb, lptKeymanWebOnly, lptKeyma /* Compile target */ -kmcmp_LoadFileProc loadfileproc = NULL; - -void* msgprocContext = NULL; +kmcmp_LoadFileProc kmcmp::loadfileproc = NULL; int kmcmp::currentLine = 0; diff --git a/developer/src/kmcmplib/src/CompilerErrors.cpp b/developer/src/kmcmplib/src/CompilerErrors.cpp index 67caebb097..6de261c8e9 100644 --- a/developer/src/kmcmplib/src/CompilerErrors.cpp +++ b/developer/src/kmcmplib/src/CompilerErrors.cpp @@ -8,6 +8,8 @@ namespace kmcmp { int ErrChr; int nErrors = 0; kmcmp_CompilerMessageProc msgproc = nullptr; + void* msgprocContext = NULL; + std::string messageFilename; } void ReportCompilerMessage(KMX_DWORD msg, const std::vector& parameters) { @@ -22,8 +24,8 @@ void ReportCompilerMessage(KMX_DWORD msg, const std::vector& parame message.lineNumber = kmcmp::currentLine + 1; message.columnNumber = kmcmp::ErrChr; message.parameters = parameters; - //TODO: message.filename = - (*kmcmp::msgproc)(message, msgprocContext); + message.filename = kmcmp::messageFilename; + (*kmcmp::msgproc)(message, kmcmp::msgprocContext); kmcmp::ErrChr = 0; } diff --git a/developer/src/kmcmplib/src/CompilerErrors.h b/developer/src/kmcmplib/src/CompilerErrors.h index a7b91c2a63..ba57784639 100644 --- a/developer/src/kmcmplib/src/CompilerErrors.h +++ b/developer/src/kmcmplib/src/CompilerErrors.h @@ -5,7 +5,8 @@ namespace kmcmp { extern kmcmp_CompilerMessageProc msgproc; + extern void* msgprocContext; + extern std::string messageFilename; } -extern void* msgprocContext; void ReportCompilerMessage(KMX_DWORD msg, const std::vector& parameters = {}); diff --git a/developer/src/kmcmplib/src/CompilerInterfaces.cpp b/developer/src/kmcmplib/src/CompilerInterfaces.cpp index 34feba9e06..11cbd95e59 100644 --- a/developer/src/kmcmplib/src/CompilerInterfaces.cpp +++ b/developer/src/kmcmplib/src/CompilerInterfaces.cpp @@ -29,14 +29,15 @@ EXTERN bool kmcmp_CompileKeyboard( return FALSE; } + kmcmp::messageFilename = pszInfile; kmcmp::msgproc = messageProc; - loadfileproc = loadFileProc; - msgprocContext = (void*)procContext; + kmcmp::loadfileproc = loadFileProc; + kmcmp::msgprocContext = (void*)procContext; kmcmp::currentLine = 0; kmcmp::nErrors = 0; int sz; - std::vector bufvec = loadFileProc(pszInfile, ""); + std::vector bufvec = kmcmp::loadfileproc(pszInfile, ""); sz = bufvec.size(); if(!sz) { ReportCompilerMessage(KmnCompilerMessages::ERROR_InfileNotExist); diff --git a/developer/src/kmcmplib/src/kmcmplib.h b/developer/src/kmcmplib/src/kmcmplib.h index 922b5de83f..91edfe1b26 100644 --- a/developer/src/kmcmplib/src/kmcmplib.h +++ b/developer/src/kmcmplib/src/kmcmplib.h @@ -17,12 +17,12 @@ namespace kmcmp { extern int BeginLine[4]; extern int currentLine; extern NamedCodeConstants *CodeConstants; + extern kmcmp_LoadFileProc loadfileproc; void RecordDeadkeyNames(PFILE_KEYBOARD fk); KMX_BOOL AddCompilerVersionStore(PFILE_KEYBOARD fk); } -extern kmcmp_LoadFileProc loadfileproc; extern KMX_BOOL AWarnDeprecatedCode_GLOBAL_LIB;