From 00da6b5977574a0564169172227d8aab45be188f Mon Sep 17 00:00:00 2001 From: Ben Longbons Date: Sat, 3 Jan 2015 21:07:56 -0800 Subject: Switch MATCH to separate begin/end macros The for loop trick turned out to be very prone to infinite loops at runtime. It's better to force compiler errors even if it's ugly. --- src/map/itemdb.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'src/map/itemdb.cpp') diff --git a/src/map/itemdb.cpp b/src/map/itemdb.cpp index dbe2dd6..c2fd0e2 100644 --- a/src/map/itemdb.cpp +++ b/src/map/itemdb.cpp @@ -92,8 +92,11 @@ Option> itemdb_exists(ItemNameId nameid) Borrowed itemdb_search(ItemNameId nameid) { Option> id_ = item_db.search(nameid); - if OPTION_IS_SOME_NOLOOP(id, id_) + OMATCH_BEGIN_SOME (id, id_) + { return id; + } + OMATCH_END (); P id = item_db.init(nameid); @@ -172,13 +175,13 @@ bool itemdb_readdb(ZString filename) PRINTF("%s\n"_fmt, res.get_failure()); ast::item::ItemOrComment ioc = TRY_UNWRAP(std::move(res.get_success()), return false); - MATCH (ioc) + MATCH_BEGIN (ioc) { - CASE(const ast::item::Comment&, c) + MATCH_CASE (const ast::item::Comment&, c) { (void)c; } - CASE(const ast::item::Item&, item) + MATCH_CASE (const ast::item::Item&, item) { ln++; @@ -207,6 +210,7 @@ bool itemdb_readdb(ZString filename) *id = std::move(idv); } } + MATCH_END (); } } -- cgit v1.2.3-60-g2f50