diff options
| author | Tristan Gingold <tgingold@free.fr> | 2017-11-28 06:12:11 +0100 | 
|---|---|---|
| committer | Tristan Gingold <tgingold@free.fr> | 2017-11-28 06:12:11 +0100 | 
| commit | fb6930072c61baa1dd5d64af2b5c37c7b53347bf (patch) | |
| tree | 5a58e7069753917770b144f71da8fa936a42da77 /src | |
| parent | 7d95eb2ad556102dbb3514ef17299fcc3c3b57b4 (diff) | |
| download | ghdl-fb6930072c61baa1dd5d64af2b5c37c7b53347bf.tar.gz ghdl-fb6930072c61baa1dd5d64af2b5c37c7b53347bf.tar.bz2 ghdl-fb6930072c61baa1dd5d64af2b5c37c7b53347bf.zip | |
Avoid crash on non-allowed declarations in protected types.
Fix #470.
Diffstat (limited to 'src')
| -rw-r--r-- | src/vhdl/sem_names.adb | 4 | ||||
| -rw-r--r-- | src/vhdl/sem_types.adb | 7 | 
2 files changed, 9 insertions, 2 deletions
| diff --git a/src/vhdl/sem_names.adb b/src/vhdl/sem_names.adb index 0190ee1a4..b96e357c7 100644 --- a/src/vhdl/sem_names.adb +++ b/src/vhdl/sem_names.adb @@ -2017,7 +2017,9 @@ package body Sem_Names is                   | Iir_Kind_Use_Clause =>                    null;                 when others => -                  Error_Kind ("sem_as_protected_item", Method); +                  --  Declarations not allowed in protected types. +                  --  Just ignore them. +                  null;              end case;              Method := Get_Chain (Method);           end loop; diff --git a/src/vhdl/sem_types.adb b/src/vhdl/sem_types.adb index 45f67be51..528a672ed 100644 --- a/src/vhdl/sem_types.adb +++ b/src/vhdl/sem_types.adb @@ -597,9 +597,14 @@ package body Sem_Types is                       end if;                    end if;                 end; +            when Iir_Kind_Anonymous_Type_Declaration => +               --  This is an error, but an anonynmous type declaration is +               --  followed by a subtype declaration, which is also an error. +               --  Avoid duplicate messages. +               null;              when others =>                 Error_Msg_Sem -                 (+El, "%n are not allowed in protected type declaration", +                 (+El, "%n is not allowed in protected type declaration",                    +El);           end case;           El := Get_Chain (El); | 
