From 2243803116f9a80bb73f746d3f6b31be5466bc11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carl-Henrik=20Sk=C3=A5rstedt?= Date: Thu, 17 Oct 2019 15:53:28 -0700 Subject: [PATCH] Fixed macro issue that defines a label ending with : --- test/unittest.bat | 2 +- test/x65macro_test.s | 13 +++++++++++++ x65.cpp | 3 ++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/test/unittest.bat b/test/unittest.bat index 16ca409..8e82df4 100644 --- a/test/unittest.bat +++ b/test/unittest.bat @@ -74,7 +74,7 @@ goto exit :x65macro_test_pass echo x65 Scope Test >>results\unittest.txt -..\bin\x64\x65 x65scope.s results\x65scope.prg -lst -sym results\x65scope.sym +..\bin\x64\x65 x65scope.s results\x65scope.prg -lst -sym results\x65scope.sym >>results\unittest.txt if %errorlevel% GTR 0 goto x65scope_test_fail fc /B compare\x65scope.prg results\x65scope.prg >>results\unittest.txt if %errorlevel% GTR 0 goto x65scope_test_fail diff --git a/test/x65macro_test.s b/test/x65macro_test.s index 2d2f8dc..6ee814c 100644 --- a/test/x65macro_test.s +++ b/test/x65macro_test.s @@ -1,3 +1,16 @@ +; Test macro defining a label +macro LabelMacro( lbl, str, len ) { +lbl: + TEXT str +const len = * - lbl +} + +dc.w Label1 +dc.b Label1_Len + + +LabelMacro Label1, "Hey!", Label1_Len + include "../macros/x65macro.i" sec diff --git a/x65.cpp b/x65.cpp index 9d7a38d..ab2ecce 100644 --- a/x65.cpp +++ b/x65.cpp @@ -868,6 +868,7 @@ static const int nCPUs = sizeof(aCPUs) / sizeof(aCPUs[0]); // hardtexted strings static const strref c_comment("//"); static const strref word_char_range("!0-9a-zA-Z_@$!#"); +static const strref macro_arg_bookend("!0-9a-zA-Z_@$!."); static const strref label_end_char_range("!0-9a-zA-Z_@$!.!:"); static const strref label_end_char_range_merlin("!0-9a-zA-Z_@$]:?"); static const strref filename_end_char_range("!0-9a-zA-Z_!@#$%&()/\\-."); @@ -2934,7 +2935,7 @@ StatusCode Asm::BuildMacro(Macro &m, strref arg_list) { macexp.copy(macro_src); while (strref param = params.split_token_trim(token_macro)) { strref a = arg_list.split_token_trim(token); - macexp.replace_bookend(param, a, label_end_char_range); + macexp.replace_bookend(param, a, macro_arg_bookend); } PushContext(m.source_name, macexp.get_strref(), macexp.get_strref()); return STATUS_OK;