From e7597400cac9900e1526ddaff3697ad97a27fc0a Mon Sep 17 00:00:00 2001 From: Nick Gasson Date: Wed, 24 Aug 2022 21:40:41 +0100 Subject: [PATCH] Error with "use work.all" when work library is not named "work" --- src/names.c | 4 ++-- test/test_sem.c | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/names.c b/src/names.c index 262063b8..e1164485 100644 --- a/src/names.c +++ b/src/names.c @@ -1492,7 +1492,7 @@ tree_t resolve_name(nametab_t *tab, const loc_t *loc, ident_t name) return NULL; // Suppress cascading errors } - if (sym->mask & N_ERROR) + if ((sym->mask & N_ERROR) || tab->top_scope->suppress) return NULL; // Was an earlier error diag_t *d = diag_new(DIAG_ERROR, loc); @@ -1684,7 +1684,7 @@ void insert_names_from_use(nametab_t *tab, tree_t use) ident_t lib_name = tree_ident(unit); lib_t lib = lib_require(lib_name); bool error; - if (lib_name == unit_name) { + if (lib_name == unit_name || unit_name == well_known(W_WORK)) { make_library_visible(tab->top_scope, lib); return; } diff --git a/test/test_sem.c b/test/test_sem.c index f3e03a35..dfca2e4e 100644 --- a/test/test_sem.c +++ b/test/test_sem.c @@ -2104,6 +2104,9 @@ START_TEST(test_vests1) opt_set_int(OPT_WARN_HIDDEN, 1); input_from_file(TESTDIR "/sem/vests1.vhd"); + lib_t foo = lib_tmp("foo"); + lib_set_work(foo); + const error_t expect[] = { { 32, "declaration of type C10S03B00X00P07N01I00914PKG hides package " "C10S03B00X00P07N01I00914PKG" }, -- 2.39.2