Skip to content

Commit 0df679f

Browse files
committed
Rework (simplify) subtype parsing.
1 parent ecc2417 commit 0df679f

File tree

1 file changed

+43
-26
lines changed

1 file changed

+43
-26
lines changed

tools/ada2wsdl-parser.adb

Lines changed: 43 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)