diff --git a/NEWS.md b/NEWS.md index 7b5f15ef9..7a20fecae 100644 --- a/NEWS.md +++ b/NEWS.md @@ -2,7 +2,9 @@ - Fixed invalid LLVM IR generation which could cause a crash with LLVM 14 (#1145). - Functional coverage is now reported correctly when summing from nested - hierarchies + hierarchies (#1154). +- External names can now be the target of concurrent signal assignment + statements (#1156). ## Version 1.15.1 - 2025-01-22 - Fixed a crash when a subprogram is called with too many named arguments diff --git a/src/parse.c b/src/parse.c index b4b709876..7fff4c5ee 100644 --- a/src/parse.c +++ b/src/parse.c @@ -13202,6 +13202,7 @@ static tree_t p_concurrent_statement(void) return p_generate_statement(label); case tLPAREN: + case tLTLT: return p_concurrent_signal_assignment_statement(label, NULL); case tID: @@ -13259,7 +13260,8 @@ static tree_t p_concurrent_statement(void) } default: expect(tPROCESS, tPOSTPONED, tCOMPONENT, tENTITY, tCONFIGURATION, - tWITH, tASSERT, tBLOCK, tIF, tFOR, tCASE, tLPAREN, tID); + tWITH, tASSERT, tBLOCK, tIF, tFOR, tCASE, tLPAREN, tID, + STD(08, tLTLT)); drop_tokens_until(tSEMI); return ensure_labelled(tree_new(T_BLOCK), label); } diff --git a/test/sem/ename.vhd b/test/sem/ename.vhd index bb1494fa4..57155cc48 100644 --- a/test/sem/ename.vhd +++ b/test/sem/ename.vhd @@ -45,4 +45,6 @@ begin begin end process; + << signal ^.foo : bit >> <= '1'; -- OK (issue #1156) + end architecture;