From cfc3a76d043f5ea2beb692992fb733bcaf5b685e Mon Sep 17 00:00:00 2001 From: Aaron Giles Date: Fri, 15 May 2020 00:32:55 -0700 Subject: netlist: Add support for empty #defines to preprocessor. [Aaron Giles] Also add detection and reporting of re-definitions. --- src/lib/netlist/plib/ppreprocessor.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'src/lib/netlist/plib/ppreprocessor.cpp') diff --git a/src/lib/netlist/plib/ppreprocessor.cpp b/src/lib/netlist/plib/ppreprocessor.cpp index 44ad423c8b7..177599da924 100644 --- a/src/lib/netlist/plib/ppreprocessor.cpp +++ b/src/lib/netlist/plib/ppreprocessor.cpp @@ -556,7 +556,14 @@ namespace plib { pstring n = args.next(); if (!is_valid_token(n)) error("define expected identifier"); - if (args.next_ws() == "(") + auto prevdef = get_define(n); + if (lti.size() == 2) + { + if (prevdef != nullptr && prevdef->m_replace != "") + error("redefinition of " + n); + m_defines.insert({n, define_t(n, "")}); + } + else if (args.next_ws() == "(") { define_t def(n); def.m_has_params = true; @@ -576,6 +583,8 @@ namespace plib { while (!args.eod()) r += args.next_ws(); def.m_replace = r; + if (prevdef != nullptr && prevdef->m_replace != r) + error("redefinition of " + n); m_defines.insert({n, def}); } else @@ -583,6 +592,8 @@ namespace plib { pstring r; while (!args.eod()) r += args.next_ws(); + if (prevdef != nullptr && prevdef->m_replace != r) + error("redefinition of " + n); m_defines.insert({n, define_t(n, r)}); } } -- cgit v1.2.3-70-g09d2