scc: Add -specify option to find loops in boxes
[yosys.git] / passes / cmds / logger.cc
index 9a27952d4acbbe0430c715f73d8b38f07a2d7dc5..6a9ed603665d255cacd31ab558fc5cc3b6c9bf4b 100644 (file)
@@ -25,7 +25,7 @@ PRIVATE_NAMESPACE_BEGIN
 
 struct LoggerPass : public Pass {
        LoggerPass() : Pass("logger", "set logger properties") { }
-       void help() YS_OVERRIDE
+       void help() override
        {
                //   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
                log("\n");
@@ -58,14 +58,15 @@ struct LoggerPass : public Pass {
                log("        do not print warnings for the specified experimental feature\n");
                log("\n");
                log("    -expect <type> <regex> <expected_count>\n");
-               log("        expect log,warning or error to appear. In case of error return code is 0.\n");
+               log("        expect log, warning or error to appear. matched errors will terminate\n");
+               log("        with exit code 0.\n");
                log("\n");
                log("    -expect-no-warnings\n");
                log("        gives error in case there is at least one warning that is not expected.\n");
                log("\n");
        }
 
-       void execute(std::vector<std::string> args, RTLIL::Design * design) YS_OVERRIDE
+       void execute(std::vector<std::string> args, RTLIL::Design * design) override
        {
                size_t argidx;
                for (argidx = 1; argidx < args.size(); argidx++)
@@ -158,12 +159,13 @@ struct LoggerPass : public Pass {
                                        log_cmd_error("Expected error message occurrences must be 1 !\n");
                                log("Added regex '%s' for warnings to expected %s list.\n", pattern.c_str(), type.c_str());
                                try {
-                                       if (type=="error")
-                                               log_expect_error.push_back(std::make_pair(YS_REGEX_COMPILE(pattern), LogExpectedItem(pattern, count)));
-                                       else if (type=="warning")
-                                               log_expect_warning.push_back(std::make_pair(YS_REGEX_COMPILE(pattern), LogExpectedItem(pattern, count)));
-                                       else
-                                               log_expect_log.push_back(std::make_pair(YS_REGEX_COMPILE(pattern), LogExpectedItem(pattern, count)));
+                                       if (type == "error")
+                                               log_expect_error[pattern] = LogExpectedItem(YS_REGEX_COMPILE(pattern), count);
+                                       else if (type == "warning")
+                                               log_expect_warning[pattern] = LogExpectedItem(YS_REGEX_COMPILE(pattern), count);
+                                       else if (type == "log")
+                                               log_expect_log[pattern] = LogExpectedItem(YS_REGEX_COMPILE(pattern), count);
+                                       else log_abort();
                                }
                                catch (const YS_REGEX_NS::regex_error& e) {
                                        log_cmd_error("Error in regex expression '%s' !\n", pattern.c_str());