From bd037f8d5dddfd790aeee91f1f648ec28ca1efde Mon Sep 17 00:00:00 2001 From: Nick Gasson Date: Fri, 22 Jul 2022 19:00:29 +0100 Subject: [PATCH] Error with index of external name. Fixes #488 --- src/common.c | 1 + src/names.c | 16 +++++++--------- test/parse/external.vhd | 6 ++++++ 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/common.c b/src/common.c index 7c573a53..814da04f 100644 --- a/src/common.c +++ b/src/common.c @@ -470,6 +470,7 @@ class_t class_of(tree_t t) case T_ARRAY_REF: case T_ARRAY_SLICE: case T_RECORD_REF: + case T_ALL: return class_of(tree_value(t)); case T_ALIAS: if (tree_has_type(t)) { diff --git a/src/names.c b/src/names.c index 9921577d..07a37393 100644 --- a/src/names.c +++ b/src/names.c @@ -608,6 +608,7 @@ static name_mask_t name_mask_for(tree_t t) case T_CONST_DECL: case T_FIELD_DECL: case T_IMPLICIT_SIGNAL: + case T_EXTERNAL_NAME: return N_OBJECT; case T_FUNC_BODY: case T_FUNC_DECL: @@ -635,15 +636,12 @@ static name_mask_t name_mask_for(tree_t t) else if (kind == T_PROC) return N_PROC; } - tree_t ref = name_to_ref(tree_value(t)); - if (ref != NULL) { - switch (class_of(ref)) { - case C_TYPE: case C_SUBTYPE: return N_TYPE; - case C_FUNCTION: return N_FUNC; - case C_PROCEDURE: return N_PROC; - case C_LABEL: return N_LABEL; - default: return N_OBJECT; - } + switch (class_of(tree_value(t))) { + case C_TYPE: case C_SUBTYPE: return N_TYPE; + case C_FUNCTION: return N_FUNC; + case C_PROCEDURE: return N_PROC; + case C_LABEL: return N_LABEL; + default: return N_OBJECT; } return 0; diff --git a/test/parse/external.vhd b/test/parse/external.vhd index 6c20e821..0ee4c405 100644 --- a/test/parse/external.vhd +++ b/test/parse/external.vhd @@ -16,4 +16,10 @@ begin i := << signal g(0).x(1).baz : integer >>; -- OK end process; + p2: process is + alias sig is <>; + begin + sig(0) <= '1'; -- OK + end process; + end architecture; -- 2.39.2