diff --git a/elab_lval.cc b/elab_lval.cc index 15c81d9ed..51e674be9 100644 --- a/elab_lval.cc +++ b/elab_lval.cc @@ -1137,13 +1137,16 @@ NetAssign_* PEIdent::elaborate_lval_net_class_member_(Design*des, NetScope*scope return lv; } else if (qual.test_const()) { + auto method_scope = find_method_containing_scope(*this, scope); if (class_type->get_prop_initialized(pidx)) { cerr << get_fileline() << ": error: " << "Property " << class_type->get_prop_name(pidx) << " is constant in this method." << " (scope=" << scope_path(scope) << ")" << endl; des->errors++; - } else if (scope->basename() != "new" && scope->basename() != "new@") { + } else if (!method_scope || + (method_scope->basename() != "new" && + method_scope->basename() != "new@")) { cerr << get_fileline() << ": error: " << "Property " << class_type->get_prop_name(pidx) << " is constant in this method."