diff options
author | 2020-05-15 00:32:55 -0700 | |
---|---|---|
committer | 2020-05-15 13:10:12 +0200 | |
commit | cfc3a76d043f5ea2beb692992fb733bcaf5b685e (patch) | |
tree | 8cd21e4002042a6fb76d6cbfeef91024b4b568ca /src/lib/netlist/plib/ppreprocessor.cpp | |
parent | 88edd7c665358de5c23d42637e4c17f878c1e275 (diff) |
netlist: Add support for empty #defines to preprocessor. [Aaron Giles]
Also add detection and reporting of re-definitions.
Diffstat (limited to 'src/lib/netlist/plib/ppreprocessor.cpp')
-rw-r--r-- | src/lib/netlist/plib/ppreprocessor.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
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)}); } } |