diff options
Diffstat (limited to 'src/synth/synth-decls.adb')
-rw-r--r-- | src/synth/synth-decls.adb | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/src/synth/synth-decls.adb b/src/synth/synth-decls.adb index 0e4674b01..df5385655 100644 --- a/src/synth/synth-decls.adb +++ b/src/synth/synth-decls.adb @@ -156,12 +156,32 @@ package body Synth.Decls is (Syn_Inst : Synth_Instance_Acc; Def : Node) return Type_Acc is File_Type : constant Node := Get_Type (Get_File_Type_Mark (Def)); - File_Typ : Type_Acc; - Typ : Type_Acc; + File_Typ : Type_Acc; + Typ : Type_Acc; + Sig : String_Acc; begin File_Typ := Get_Subtype_Object (Syn_Inst, File_Type); + if Get_Text_File_Flag (Def) + or else + Get_Kind (File_Type) in Iir_Kinds_Scalar_Type_And_Subtype_Definition + then + Sig := null; + else + declare + Sig_Str : String (1 .. Get_File_Signature_Length (File_Type) + 2); + Off : Natural := Sig_Str'First; + begin + Get_File_Signature (File_Type, Sig_Str, Off); + Sig_Str (Off + 0) := '.'; + Sig_Str (Off + 1) := ASCII.NUL; + Sig := new String'(Sig_Str); + end; + end if; + Typ := Create_File_Type (File_Typ); + Typ.File_Signature := Sig; + return Typ; end Synth_File_Type_Definition; |