@@ -565,6 +565,9 @@ package body Ada2WSDL.Parser is
565565 procedure Analyze_Derived (Node : Derived_Type_Def'Class);
566566 -- Analyze a derived type definition
567567
568+ procedure Analyze_Subtype (Node : Subtype_Indication'Class);
569+ -- Analyze a subtype
570+
568571 procedure Analyze_Enumeration (Node : Enum_Type_Def'Class);
569572 -- Analyzye an enumeration definition
570573
@@ -581,11 +584,7 @@ package body Ada2WSDL.Parser is
581584 else Node.As_Type_Decl.F_Name));
582585 -- Return the Node's type name
583586
584- function T_Def return Type_Def is
585- (if Node.Kind = Ada_Subtype_Indication
586- then Node.As_Subtype_Indication.P_Designated_Type_Decl.As_Type_Decl
587- .F_Type_Def
588- else Node.As_Type_Decl.F_Type_Def);
587+ function T_Def return Type_Def is (Node.As_Type_Decl.F_Type_Def);
589588
590589 function T_Decl return Base_Type_Decl is (Node.As_Base_Type_Decl);
591590
@@ -899,29 +898,47 @@ package body Ada2WSDL.Parser is
899898 end loop ;
900899 end Analyze_Record ;
901900
901+ -- -------------------
902+ -- Analyze_Subtype --
903+ -- -------------------
904+
905+ procedure Analyze_Subtype (Node : Subtype_Indication'Class) is
906+ begin
907+ Analyze_Type (Node.P_Designated_Type_Decl);
908+ end Analyze_Subtype ;
909+
902910 begin
903911 if not Generator.Type_Exists (NS, T_Name) then
904- case T_Def.Kind is
905- when Ada_Derived_Type_Def =>
906- Analyze_Derived (T_Def.As_Derived_Type_Def);
907-
908- when Ada_Signed_Int_Type_Def
909- | Ada_Floating_Point_Def
910- | Ada_Mod_Int_Type_Def
911- | Ada_Ordinary_Fixed_Point_Def
912- | Ada_Decimal_Fixed_Point_Def
913- =>
914- Analyze_Numeric (T_Def);
915-
916- when Ada_Enum_Type_Def =>
917- Analyze_Enumeration (T_Def.As_Enum_Type_Def);
918-
919- when Ada_Record_Type_Def =>
920- Analyze_Record (T_Def.As_Record_Type_Def);
921-
922- when Ada_Array_Type_Def =>
923- Analyze_Array
924- (T_Decl, T_Name, T_Decl, T_Def.As_Array_Type_Def);
912+ case Node.Kind is
913+ when Ada_Subtype_Indication =>
914+ Analyze_Subtype (Node.As_Subtype_Indication);
915+
916+ when Ada_Concrete_Type_Decl =>
917+ case T_Def.Kind is
918+ when Ada_Derived_Type_Def =>
919+ Analyze_Derived (T_Def.As_Derived_Type_Def);
920+
921+ when Ada_Signed_Int_Type_Def
922+ | Ada_Floating_Point_Def
923+ | Ada_Mod_Int_Type_Def
924+ | Ada_Ordinary_Fixed_Point_Def
925+ | Ada_Decimal_Fixed_Point_Def
926+ =>
927+ Analyze_Numeric (T_Def);
928+
929+ when Ada_Enum_Type_Def =>
930+ Analyze_Enumeration (T_Def.As_Enum_Type_Def);
931+
932+ when Ada_Record_Type_Def =>
933+ Analyze_Record (T_Def.As_Record_Type_Def);
934+
935+ when Ada_Array_Type_Def =>
936+ Analyze_Array
937+ (T_Decl, T_Name, T_Decl, T_Def.As_Array_Type_Def);
938+
939+ when others =>
940+ null ;
941+ end case ;
925942
926943 when others =>
927944 null ;
0 commit comments