From 871d447ff7b1084adfdcc732a4485d569eeb5c91 Mon Sep 17 00:00:00 2001 From: Martin Whitaker Date: Fri, 31 Oct 2014 21:42:23 +0000 Subject: [PATCH] Reinstate error recovery for range expressions. If an error is found whilst elaborating a range expression in a signal declaration, create a dummy range and continue elaboration. This stops the compiler reporting an error every time that signal is referenced. --- elab_sig.cc | 4 ---- netmisc.cc | 4 ++++ 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/elab_sig.cc b/elab_sig.cc index d2923b007..46ba52071 100644 --- a/elab_sig.cc +++ b/elab_sig.cc @@ -996,10 +996,6 @@ NetNet* PWire::elaborate_sig(Design*des, NetScope*scope) const << ". Now check for consistency." << endl; } - /* If we find errors here, then give up on this signal. */ - if (bad_range) - return 0; - /* We have a port size error */ if (port_set_ && net_set_ && !test_ranges_eeq(plist, nlist)) { diff --git a/netmisc.cc b/netmisc.cc index 9ec560c1a..5494cb6e9 100644 --- a/netmisc.cc +++ b/netmisc.cc @@ -972,6 +972,10 @@ bool evaluate_ranges(Design*des, NetScope*scope, delete texpr; + /* Error recovery */ + if (bad_lsb) use_lsb = 0; + if (bad_msb) use_msb = use_lsb; + llist.push_back(netrange_t(use_msb, use_lsb)); }