File indexing completed on 2025-02-02 03:54:47
0001 <!DOCTYPE html> 0002 <html><head> 0003 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 0004 <title>test.adb</title> 0005 <meta name="generator" content="KF5::SyntaxHighlighting - Definition (Ada) - Theme (Breeze Light)"/> 0006 </head><body style="background-color:#ffffff;color:#1f1c1b"><pre> 0007 <span style="font-weight:bold">with</span> Ada<span style="color:#ca60ca">.</span>Containers<span style="color:#ca60ca">.</span>Vectors; 0008 <span style="font-weight:bold">with</span> Ada<span style="color:#ca60ca">.</span>Strings; <span style="font-weight:bold">use</span> Ada<span style="color:#ca60ca">.</span>Strings; 0009 <span style="font-weight:bold">with</span> Put_Title; 0010 0011 <span style="font-weight:bold">procedure</span> LAL_DDA <span style="font-weight:bold">is</span> 0012 Collection <span style="color:#ca60ca">:</span> Repinfo_Collection; 0013 0014 A_Basic_Record <span style="color:#ca60ca">:</span> Basic_Record <span style="color:#ca60ca">:=</span> Basic_Record'<span style="color:#ca60ca">(</span>A <span style="color:#ca60ca">=></span> <span style="color:#b08000">42</span><span style="color:#ca60ca">)</span>; 0015 Another_Basic_Record <span style="color:#ca60ca">:</span> Basic_Record <span style="color:#ca60ca">:=</span> <span style="color:#ca60ca">(</span>A <span style="color:#ca60ca">=></span> <span style="color:#b08000">42</span><span style="color:#ca60ca">)</span>; 0016 Nix <span style="color:#ca60ca">:</span> <span style="font-weight:bold">constant</span> Null_Record <span style="color:#ca60ca">:=</span> <span style="color:#ca60ca">(</span><span style="font-weight:bold">null</span> <span style="font-weight:bold">record</span><span style="color:#ca60ca">)</span>; 0017 0018 <span style="font-weight:bold">procedure</span> Process_Type_Decl <span style="color:#ca60ca">(</span>Decl <span style="color:#ca60ca">:</span> Base_Type_Decl<span style="color:#ca60ca">)</span>; 0019 <span style="color:#898887">-- Display all representation information that is available in</span> 0020 <span style="color:#898887">-- ``Collection`` for this type declaration.</span> 0021 0022 <span style="font-weight:bold">procedure</span> Process_Variants 0023 <span style="color:#ca60ca">(</span>Variants <span style="color:#ca60ca">:</span> Variant_Representation_Array; Prefix <span style="color:#ca60ca">:</span> <span style="color:#0057ae">String</span><span style="color:#ca60ca">)</span>; 0024 <span style="color:#898887">-- Display all representation information for the given record variants.</span> 0025 <span style="color:#898887">-- ``Prefix`` is used as a prefix for all printed lines.</span> 0026 0027 <span style="font-weight:bold">package</span> Expr_Vectors <span style="font-weight:bold">is</span> <span style="font-weight:bold">new</span> Ada<span style="color:#ca60ca">.</span>Containers<span style="color:#ca60ca">.</span>Vectors <span style="color:#ca60ca">(</span>Positive<span style="color:#ca60ca">,</span> Expr<span style="color:#ca60ca">)</span>; 0028 <span style="font-weight:bold">use</span> <span style="font-weight:bold">type</span> Expr_Vectors<span style="color:#ca60ca">.</span>Vector; 0029 <span style="font-weight:bold">package</span> Expr_Vector_Vectors <span style="font-weight:bold">is</span> <span style="font-weight:bold">new</span> Ada<span style="color:#ca60ca">.</span>Containers<span style="color:#ca60ca">.</span>Vectors 0030 <span style="color:#ca60ca">(</span>Positive<span style="color:#ca60ca">,</span> Expr_Vectors<span style="color:#ca60ca">.</span>Vector<span style="color:#ca60ca">)</span>; 0031 0032 <span style="font-weight:bold">function</span> Test_Discriminants 0033 <span style="color:#ca60ca">(</span>Decl <span style="color:#ca60ca">:</span> Base_Type_Decl<span style="color:#ca60ca">)</span> <span style="font-weight:bold">return</span> Expr_Vector_Vectors<span style="color:#ca60ca">.</span>Vector; 0034 <span style="color:#898887">-- Fetch the vector of discriminants to use for testing from nearby Test</span> 0035 <span style="color:#898887">-- pragmas.</span> 0036 0037 <span style="font-weight:bold">procedure</span> Error <span style="color:#ca60ca">(</span>Node <span style="color:#ca60ca">:</span> Ada_Node'Class; Message <span style="color:#ca60ca">:</span> <span style="color:#0057ae">String</span><span style="color:#ca60ca">)</span> <span style="font-weight:bold">with</span> <span style="color:#0095ff;font-weight:bold">No_Return</span>; 0038 <span style="color:#898887">-- Abort the App with the given error ``Message``, contextualized using</span> 0039 <span style="color:#898887">-- ``Node`` 's source location.</span> 0040 0041 <span style="font-weight:bold">package</span> App <span style="font-weight:bold">is</span> <span style="font-weight:bold">new</span> Libadalang<span style="color:#ca60ca">.</span>Helpers<span style="color:#ca60ca">.</span>App 0042 <span style="color:#ca60ca">(</span>Name <span style="color:#ca60ca">=></span> <span style="color:#bf0303">"lal_dda"</span><span style="color:#ca60ca">,</span> 0043 Description <span style="color:#ca60ca">=></span> 0044 <span style="color:#bf0303">"Exercize Libadalang's Data_Decomposition API on type declarations"</span><span style="color:#ca60ca">,</span> 0045 App_Setup <span style="color:#ca60ca">=></span> App_Setup<span style="color:#ca60ca">,</span> 0046 Process_Unit <span style="color:#ca60ca">=></span> Process_Unit<span style="color:#ca60ca">)</span>; 0047 0048 <span style="font-weight:bold">package</span> Args <span style="font-weight:bold">is</span> 0049 <span style="font-weight:bold">use</span> GNATCOLL<span style="color:#ca60ca">.</span>Opt_Parse; 0050 0051 <span style="font-weight:bold">package</span> Rep_Info_Files <span style="font-weight:bold">is</span> <span style="font-weight:bold">new</span> Parse_Option_List 0052 <span style="color:#ca60ca">(</span>App<span style="color:#ca60ca">.</span>Args<span style="color:#ca60ca">.</span>Parser<span style="color:#ca60ca">,</span> <span style="color:#bf0303">"-i"</span><span style="color:#ca60ca">,</span> <span style="color:#bf0303">"--rep-info-file"</span><span style="color:#ca60ca">,</span> 0053 Arg_Type <span style="color:#ca60ca">=></span> Unbounded_String<span style="color:#ca60ca">,</span> 0054 Accumulate <span style="color:#ca60ca">=></span> True<span style="color:#ca60ca">,</span> 0055 Help <span style="color:#ca60ca">=></span> <span style="color:#bf0303">"Output for the compiler's -gnatR4j option"</span><span style="color:#ca60ca">)</span>; 0056 0057 <span style="font-weight:bold">end</span> Args; 0058 0059 <span style="color:#898887">---------------</span> 0060 <span style="color:#898887">-- App_Setup --</span> 0061 <span style="color:#898887">---------------</span> 0062 0063 <span style="font-weight:bold">procedure</span> App_Setup <span style="color:#ca60ca">(</span>Context <span style="color:#ca60ca">:</span> App_Context; Jobs <span style="color:#ca60ca">:</span> App_Job_Context_Array<span style="color:#ca60ca">)</span> <span style="font-weight:bold">is</span> 0064 <span style="font-weight:bold">pragma</span> Unreferenced <span style="color:#ca60ca">(</span>Context<span style="color:#ca60ca">,</span> Jobs<span style="color:#ca60ca">)</span>; 0065 <span style="font-weight:bold">begin</span> 0066 Collection <span style="color:#ca60ca">:=</span> Load <span style="color:#ca60ca">(</span>Filename_Array <span style="color:#ca60ca">(</span>Args<span style="color:#ca60ca">.</span>Rep_Info_Files<span style="color:#ca60ca">.</span>Get<span style="color:#ca60ca">))</span>; 0067 <span style="font-weight:bold">exception</span> 0068 <span style="font-weight:bold">when</span> Exc <span style="color:#ca60ca">:</span> Loading_Error <span style="color:#ca60ca">=></span> 0069 Put_Line 0070 <span style="color:#ca60ca">(</span><span style="color:#bf0303">"Loading_Error raised while loading representation information:"</span><span style="color:#ca60ca">)</span>; 0071 Put_Line <span style="color:#ca60ca">(</span>Exception_Message <span style="color:#ca60ca">(</span>Exc<span style="color:#ca60ca">))</span>; 0072 New_Line; 0073 <span style="font-weight:bold">end</span> App_Setup; 0074 0075 <span style="color:#898887">------------------</span> 0076 <span style="color:#898887">-- Process_Unit --</span> 0077 <span style="color:#898887">------------------</span> 0078 0079 <span style="font-weight:bold">procedure</span> Process_Unit <span style="color:#ca60ca">(</span>Context <span style="color:#ca60ca">:</span> App_Job_Context; Unit <span style="color:#ca60ca">:</span> Analysis_Unit<span style="color:#ca60ca">)</span> <span style="font-weight:bold">is</span> 0080 <span style="font-weight:bold">pragma</span> Unreferenced <span style="color:#ca60ca">(</span>Context<span style="color:#ca60ca">)</span>; 0081 0082 <span style="font-weight:bold">function</span> Process <span style="color:#ca60ca">(</span>Node <span style="color:#ca60ca">:</span> Ada_Node'Class<span style="color:#ca60ca">)</span> <span style="font-weight:bold">return</span> Visit_Status; 0083 0084 <span style="font-weight:bold">function</span> Process <span style="color:#ca60ca">(</span>Node <span style="color:#ca60ca">:</span> Ada_Node'Class<span style="color:#ca60ca">)</span> <span style="font-weight:bold">return</span> Visit_Status <span style="font-weight:bold">is</span> 0085 <span style="font-weight:bold">begin</span> 0086 <span style="font-weight:bold">case</span> Node<span style="color:#ca60ca">.</span>Kind <span style="font-weight:bold">is</span> 0087 <span style="font-weight:bold">when</span> Ada_Base_Type_Decl <span style="color:#ca60ca">=></span> 0088 Process_Type_Decl <span style="color:#ca60ca">(</span>Node<span style="color:#ca60ca">.</span>As_Base_Type_Decl<span style="color:#ca60ca">)</span>; 0089 0090 <span style="font-weight:bold">when</span> Ada_Pragma_Node <span style="color:#ca60ca">=></span> 0091 <span style="font-weight:bold">declare</span> 0092 PN <span style="color:#ca60ca">:</span> <span style="font-weight:bold">constant</span> Pragma_Node <span style="color:#ca60ca">:=</span> Node<span style="color:#ca60ca">.</span>As_Pragma_Node; 0093 Name <span style="color:#ca60ca">:</span> <span style="font-weight:bold">constant</span> Text_Type <span style="color:#ca60ca">:=</span> To_Lower <span style="color:#ca60ca">(</span>PN<span style="color:#ca60ca">.</span>F_Id<span style="color:#ca60ca">.</span>Text<span style="color:#ca60ca">)</span>; 0094 Decl <span style="color:#ca60ca">:</span> Ada_Node; 0095 <span style="font-weight:bold">begin</span> 0096 <span style="font-weight:bold">if</span> Name <span style="color:#ca60ca">=</span> <span style="color:#bf0303">"test_object_type"</span> <span style="font-weight:bold">then</span> 0097 Decl <span style="color:#ca60ca">:=</span> PN<span style="color:#ca60ca">.</span>Previous_Sibling; 0098 <span style="font-weight:bold">if</span> Decl<span style="color:#ca60ca">.</span>Kind <span style="color:#ca60ca">/=</span> Ada_Object_Decl <span style="font-weight:bold">then</span> 0099 Error 0100 <span style="color:#ca60ca">(</span>Node<span style="color:#ca60ca">,</span> 0101 <span style="color:#bf0303">"previous declaration must be an object"</span> 0102 <span style="color:#ca60ca">&</span> <span style="color:#bf0303">" declaration"</span><span style="color:#ca60ca">)</span>; 0103 <span style="font-weight:bold">end if</span>; 0104 Process_Type_Decl 0105 <span style="color:#ca60ca">(</span>Decl<span style="color:#ca60ca">.</span>As_Object_Decl 0106 <span style="color:#ca60ca">.</span>F_Type_Expr 0107 <span style="color:#ca60ca">.</span>P_Designated_Type_Decl<span style="color:#ca60ca">)</span>; 0108 <span style="font-weight:bold">end if</span>; 0109 <span style="font-weight:bold">if</span> I <span style="color:#ca60ca">></span> <span style="color:#b08000">1</span> <span style="font-weight:bold">then</span> 0110 Put <span style="color:#ca60ca">(</span><span style="color:#bf0303">", "</span><span style="color:#ca60ca">)</span>; 0111 <span style="font-weight:bold">end if</span>; 0112 <span style="font-weight:bold">end</span>; 0113 0114 <span style="font-weight:bold">when</span> <span style="font-weight:bold">others</span> <span style="color:#ca60ca">=></span> 0115 <span style="font-weight:bold">null</span>; 0116 <span style="font-weight:bold">end case</span>; 0117 <span style="font-weight:bold">return</span> Into; 0118 <span style="font-weight:bold">end</span> Process; 0119 0120 <span style="font-weight:bold">begin</span> 0121 Put_Title 0122 <span style="color:#ca60ca">(</span><span style="color:#924c9d">'#'</span><span style="color:#ca60ca">,</span> <span style="color:#bf0303">"Analyzing "</span> <span style="color:#ca60ca">&</span> Ada<span style="color:#ca60ca">.</span>Directories<span style="color:#ca60ca">.</span>Simple_Name <span style="color:#ca60ca">(</span>Unit<span style="color:#ca60ca">.</span>Get_Filename<span style="color:#ca60ca">))</span>; 0123 <span style="font-weight:bold">if</span> Unit<span style="color:#ca60ca">.</span>Has_Diagnostics <span style="font-weight:bold">then</span> 0124 <span style="font-weight:bold">for</span> D <span style="font-weight:bold">of</span> Unit<span style="color:#ca60ca">.</span>Diagnostics <span style="font-weight:bold">loop</span> 0125 Put_Line <span style="color:#ca60ca">(</span>Unit<span style="color:#ca60ca">.</span>Format_GNU_Diagnostic <span style="color:#ca60ca">(</span>D<span style="color:#ca60ca">))</span>; 0126 <span style="font-weight:bold">end loop</span>; 0127 New_Line; 0128 <span style="font-weight:bold">return</span>; 0129 0130 <span style="font-weight:bold">elsif</span> <span style="font-weight:bold">not</span> Unit<span style="color:#ca60ca">.</span>Root<span style="color:#ca60ca">.</span>Is_Null <span style="font-weight:bold">then</span> 0131 Unit<span style="color:#ca60ca">.</span>Root<span style="color:#ca60ca">.</span>Traverse <span style="color:#ca60ca">(</span>Process'Access<span style="color:#ca60ca">)</span>; 0132 <span style="font-weight:bold">end if</span>; 0133 <span style="font-weight:bold">end</span> Process_Unit; 0134 <span style="font-weight:bold">end</span> LAL_DDA; 0135 0136 <span style="font-weight:bold">type</span> Car <span style="font-weight:bold">is</span> <span style="font-weight:bold">record</span> 0137 Identity <span style="color:#ca60ca">:</span> <span style="color:#0057ae">Long_Long_Integer</span>; 0138 Number_Wheels <span style="color:#ca60ca">:</span> Positive <span style="font-weight:bold">range</span> <span style="color:#b08000">1</span> <span style="color:#ca60ca">..</span> <span style="color:#b08000">16#</span><span style="color:#b08000">FF</span><span style="color:#b08000">#</span><span style="color:#b08000">E1</span>; 0139 Number_Wheels <span style="color:#ca60ca">:</span> Positive <span style="font-weight:bold">range</span> <span style="color:#b08000">16#</span><span style="color:#b08000">F.FF</span><span style="color:#b08000">#</span><span style="color:#b08000">E+2</span> <span style="color:#ca60ca">..</span> <span style="color:#b08000">2#</span><span style="color:#b08000">1111_1111</span><span style="color:#b08000">#</span>; 0140 Paint <span style="color:#ca60ca">:</span> Color; 0141 Horse_Power_kW <span style="color:#ca60ca">:</span> <span style="color:#0057ae">Float</span> <span style="font-weight:bold">range</span> <span style="color:#b08000">0.0</span> <span style="color:#ca60ca">..</span> <span style="color:#b08000">2_000.0</span>; 0142 Consumption <span style="color:#ca60ca">:</span> <span style="color:#0057ae">Float</span> <span style="font-weight:bold">range</span> <span style="color:#b08000">0.0</span> <span style="color:#ca60ca">..</span> <span style="color:#b08000">100.0</span>; 0143 <span style="font-weight:bold">end record</span>; 0144 0145 <span style="font-weight:bold">type</span> Null_Record <span style="font-weight:bold">is</span> <span style="font-weight:bold">null</span> <span style="font-weight:bold">record</span>; 0146 0147 <span style="font-weight:bold">type</span> Traffic_Light_Access <span style="font-weight:bold">is</span> <span style="font-weight:bold">access</span> Mutable_Variant_Record; 0148 Any_Traffic_Light <span style="color:#ca60ca">:</span> Traffic_Light_Access <span style="color:#ca60ca">:=</span> 0149 <span style="font-weight:bold">new</span> Mutable_Variant_Record; 0150 Aliased_Traffic_Light <span style="color:#ca60ca">:</span> <span style="font-weight:bold">aliased</span> Mutable_Variant_Record; 0151 0152 <span style="font-weight:bold">pragma</span> <span style="color:#0095ff;font-weight:bold">Unchecked_Union</span> <span style="color:#ca60ca">(</span>Union<span style="color:#ca60ca">)</span>; 0153 <span style="font-weight:bold">pragma</span> <span style="color:#0095ff;font-weight:bold">Convention</span> <span style="color:#ca60ca">(</span>C<span style="color:#ca60ca">,</span> Union<span style="color:#ca60ca">)</span>; <span style="color:#898887">-- optional</span> 0154 0155 <span style="font-weight:bold">type</span> Programmer <span style="font-weight:bold">is</span> <span style="font-weight:bold">new</span> Person 0156 <span style="font-weight:bold">and</span> Printable 0157 <span style="font-weight:bold">with</span> 0158 <span style="font-weight:bold">record</span> 0159 Skilled_In <span style="color:#ca60ca">:</span> Language_List; 0160 <span style="font-weight:bold">end record</span>; 0161 0162 <span style="color:#b08000">3#</span><span style="color:#b08000">12.112</span><span style="color:#b08000">#</span><span style="color:#b08000">e3</span> 0163 <span style="color:#b08000">3#</span><span style="color:#b08000">12.11</span> <span style="font-weight:bold">use</span> 0164 <span style="color:#898887">-- ^ invalid</span> 0165 <span style="color:#b08000">3#</span><span style="color:#b08000">12.2</span>3#e3 0166 <span style="color:#898887">-- ^ invalid</span> 0167 <span style="color:#b08000">3#</span><span style="color:#b08000">12.11</span>ds# 0168 <span style="color:#898887">-- ^ invalid</span> 0169 <span style="color:#b08000">1211</span>ds 0170 <span style="color:#898887">-- ^ invalid</span> 0171 </pre></body></html>