Changeset 404


Ignore:
Timestamp:
Feb 26, 2015, 3:50:58 PM (5 years ago)
Author:
Maxim Reznik
Message:

Split interpretation visitor to two interfaces

One for up and another for down

Location:
trunk/ada-2012/src
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/ada-2012/src/api/gela-interpretations.ads

    r403 r404  
    9797   --  This eliminates need to traverse syntax tree in some situation
    9898
    99    type Visiter is limited interface;
     99   type Down_Visiter is limited interface;
    100100
    101101   not overriding procedure On_Defining_Name
    102      (Self   : in out Visiter;
     102     (Self   : in out Down_Visiter;
    103103      Name   : Gela.Elements.Defining_Names.Defining_Name_Access;
    104104      Down   : Gela.Interpretations.Interpretation_Index_Array) is null;
     
    106106
    107107   not overriding procedure On_Expression
    108      (Self   : in out Visiter;
     108     (Self   : in out Down_Visiter;
    109109      Tipe   : Gela.Semantic_Types.Type_Index;
    110110      Down   : Gela.Interpretations.Interpretation_Index_Array) is null;
    111111   --  Called for each expression interpretation
    112112
    113    not overriding procedure On_Expression_Category
    114      (Self   : in out Visiter;
    115       Kinds  : Gela.Type_Views.Category_Kind_Set;
    116       Down   : Gela.Interpretations.Interpretation_Index_Array) is null;
    117    --  Called for each category of expression interpretation
    118 
    119113   not overriding procedure On_Attr_Function
    120      (Self   : in out Visiter;
     114     (Self   : in out Down_Visiter;
    121115      Kind   : Gela.Lexical_Types.Predefined_Symbols.Attribute;
    122116      Down   : Gela.Interpretations.Interpretation_Index_Array) is null;
     
    124118
    125119   not overriding procedure On_Placeholder
    126      (Self   : in out Visiter;
     120     (Self   : in out Down_Visiter;
    127121      Kind   : Gela.Interpretations.Placeholder_Kind;
    128122      Down   : Gela.Interpretations.Interpretation_Index_Array) is null;
    129123   --  Called for each placeholder
    130124
    131    not overriding procedure On_Symbol
    132      (Self   : in out Visiter;
    133       Symbol : Gela.Lexical_Types.Symbol;
    134       Down   : Gela.Interpretations.Interpretation_Index_Array) is null;
    135    --  Called for each symbol
    136 
    137125   not overriding procedure On_Tuple
    138      (Self  : in out Visiter;
    139       Value : Gela.Interpretations.Interpretation_Set_Index_Array;
    140       Down  : Gela.Interpretations.Interpretation_Index_Array) is null;
    141    --  Called for each tuple
     126     (Self   : in out Down_Visiter;
     127      Down   : Gela.Interpretations.Interpretation_Index_Array) is null;
     128   --  Called for each tuple. FIXME: replace with (head, tail) ???
    142129
    143130   not overriding procedure Visit
    144131     (Self   : in out Interpretation_Manager;
    145132      Index  : Gela.Interpretations.Interpretation_Index;
    146       Target : in out Visiter'Class) is abstract;
     133      Target : in out Down_Visiter'Class) is abstract;
    147134   --  For interpretation with given persistent Index apply Target visiter
    148135
    149136   type Cursor is limited interface;
     137   type Up_Visiter is tagged;
    150138
    151139   not overriding function Has_Element (Self : Cursor) return Boolean is
     
    158146   not overriding procedure Visit
    159147     (Self   : Cursor;
    160       Target : access Visiter'Class) is abstract;
     148      Target : access Up_Visiter'Class) is abstract;
    161149   --  For current interpretation for cursor apply Target visiter
    162150
     
    165153        is abstract;
    166154   --  Request persistent index for current interpretation
     155
     156   type Up_Visiter is limited interface;
     157
     158   not overriding procedure On_Defining_Name
     159     (Self   : in out Up_Visiter;
     160      Name   : Gela.Elements.Defining_Names.Defining_Name_Access;
     161      Cursor : Gela.Interpretations.Cursor'Class) is null;
     162   --  Called for each defining name interpretation
     163
     164   not overriding procedure On_Expression
     165     (Self   : in out Up_Visiter;
     166      Tipe   : Gela.Semantic_Types.Type_Index;
     167      Cursor : Gela.Interpretations.Cursor'Class) is null;
     168   --  Called for each expression interpretation
     169
     170   not overriding procedure On_Expression_Category
     171     (Self   : in out Up_Visiter;
     172      Kinds  : Gela.Type_Views.Category_Kind_Set;
     173      Cursor : Gela.Interpretations.Cursor'Class) is null;
     174   --  Called for each category of expression interpretation
     175
     176   not overriding procedure On_Attr_Function
     177     (Self   : in out Up_Visiter;
     178      Kind   : Gela.Lexical_Types.Predefined_Symbols.Attribute;
     179      Cursor : Gela.Interpretations.Cursor'Class) is null;
     180   --  Called for each attribute denoting function
     181
     182   not overriding procedure On_Placeholder
     183     (Self   : in out Up_Visiter;
     184      Kind   : Gela.Interpretations.Placeholder_Kind;
     185      Cursor : Gela.Interpretations.Cursor'Class) is null;
     186   --  Called for each placeholder
     187
     188   not overriding procedure On_Symbol
     189     (Self   : in out Up_Visiter;
     190      Symbol : Gela.Lexical_Types.Symbol;
     191      Cursor : Gela.Interpretations.Cursor'Class) is null;
     192   --  Called for each symbol
     193
     194   not overriding procedure On_Tuple
     195     (Self   : in out Up_Visiter;
     196      Value  : Gela.Interpretations.Interpretation_Set_Index_Array) is null;
     197   --  Called for each tuple
    167198
    168199   not overriding function Get_Cursor
  • trunk/ada-2012/src/semantic/gela-debug_properties.adb

    r398 r404  
    5252
    5353   package Dump_Interpretation is
    54       type Visiter is new Gela.Interpretations.Visiter with record
     54      type Visiter is new Gela.Interpretations.Down_Visiter with record
    5555         Comp : not null Gela.Compilations.Compilation_Access;
    5656      end record;
     
    7171         Down   : Gela.Interpretations.Interpretation_Index_Array);
    7272
    73       overriding procedure On_Symbol
    74         (Self   : in out Visiter;
    75          Symbol : Gela.Lexical_Types.Symbol;
    76          Down   : Gela.Interpretations.Interpretation_Index_Array);
    77 
    7873      overriding procedure On_Tuple
    7974        (Self  : in out Visiter;
    80          Value : Gela.Interpretations.Interpretation_Set_Index_Array;
    8175         Down  : Gela.Interpretations.Interpretation_Index_Array);
    8276
    8377   end Dump_Interpretation;
     78
     79   package Dump_Up_Interpretation is
     80      type Visiter is new Gela.Interpretations.Up_Visiter with record
     81         Comp : not null Gela.Compilations.Compilation_Access;
     82      end record;
     83
     84      overriding procedure On_Defining_Name
     85        (Self   : in out Visiter;
     86         Name   : Gela.Elements.Defining_Names.Defining_Name_Access;
     87         Cursor : Gela.Interpretations.Cursor'Class);
     88
     89      overriding procedure On_Expression
     90        (Self   : in out Visiter;
     91         Tipe   : Gela.Semantic_Types.Type_Index;
     92         Cursor : Gela.Interpretations.Cursor'Class);
     93
     94      overriding procedure On_Attr_Function
     95        (Self   : in out Visiter;
     96         Kind   : Gela.Lexical_Types.Predefined_Symbols.Attribute;
     97         Cursor : Gela.Interpretations.Cursor'Class);
     98
     99      overriding procedure On_Tuple
     100        (Self  : in out Visiter;
     101         Value : Gela.Interpretations.Interpretation_Set_Index_Array);
     102
     103      overriding procedure On_Symbol
     104        (Self   : in out Visiter;
     105         Symbol : Gela.Lexical_Types.Symbol;
     106         Cursor : Gela.Interpretations.Cursor'Class);
     107
     108   end Dump_Up_Interpretation;
    84109
    85110   package body Dump_Property is
     
    176201         IM  : constant Gela.Interpretations.Interpretation_Manager_Access :=
    177202           Comp.Context.Interpretation_Manager;
    178          IV  : aliased Dump_Interpretation.Visiter := (Comp => Comp);
     203         IV  : aliased Dump_Up_Interpretation.Visiter := (Comp => Comp);
    179204         Pos : Gela.Interpretations.Cursor'Class := IM.Get_Cursor (Value);
    180205      begin
     
    241266         Down   : Gela.Interpretations.Interpretation_Index_Array) is null;
    242267
     268      overriding procedure On_Tuple
     269        (Self  : in out Visiter;
     270         Down  : Gela.Interpretations.Interpretation_Index_Array)
     271      is
     272         pragma Unreferenced (Self);
     273      begin
     274         Put_Line ("   Tuple");
     275
     276         for J of Down loop
     277            Put_Line
     278              ("     DOWN" &
     279                 Gela.Interpretations.Interpretation_Index'Image (J));
     280         end loop;
     281      end On_Tuple;
     282
     283   end Dump_Interpretation;
     284
     285   package body Dump_Up_Interpretation is
     286
     287      overriding procedure On_Defining_Name
     288        (Self   : in out Visiter;
     289         Name   : Gela.Elements.Defining_Names.Defining_Name_Access;
     290         Cursor : Gela.Interpretations.Cursor'Class)
     291      is
     292         pragma Unreferenced (Cursor);
     293         Symbol : constant Gela.Lexical_Types.Symbol := Name.Full_Name;
     294      begin
     295         Put_Line
     296           ("   Defining_Name " &
     297              Self.Comp.Context.Symbols.Image (Symbol).To_UTF_8_String);
     298      end On_Defining_Name;
     299
     300      overriding procedure On_Expression
     301        (Self   : in out Visiter;
     302         Tipe   : Gela.Semantic_Types.Type_Index;
     303         Cursor : Gela.Interpretations.Cursor'Class)
     304      is
     305         pragma Unreferenced (Self, Tipe, Cursor);
     306      begin
     307         Put_Line ("   Expression ");
     308      end On_Expression;
     309
     310      overriding procedure On_Attr_Function
     311        (Self   : in out Visiter;
     312         Kind   : Gela.Lexical_Types.Predefined_Symbols.Attribute;
     313         Cursor : Gela.Interpretations.Cursor'Class)
     314      is
     315         pragma Unreferenced (Self, Kind, Cursor);
     316      begin
     317         Put_Line ("   Attr_Function ");
     318      end On_Attr_Function;
     319
    243320      overriding procedure On_Symbol
    244321        (Self   : in out Visiter;
    245322         Symbol : Gela.Lexical_Types.Symbol;
    246          Down   : Gela.Interpretations.Interpretation_Index_Array)
    247       is
    248          pragma Unreferenced (Down);
     323         Cursor : Gela.Interpretations.Cursor'Class)
     324      is
     325         pragma Unreferenced (Cursor);
    249326      begin
    250327         Put_Line
     
    255332      overriding procedure On_Tuple
    256333        (Self  : in out Visiter;
    257          Value : Gela.Interpretations.Interpretation_Set_Index_Array;
    258          Down  : Gela.Interpretations.Interpretation_Index_Array)
     334         Value : Gela.Interpretations.Interpretation_Set_Index_Array)
    259335      is
    260336         pragma Unreferenced (Self);
     
    267343                 Gela.Interpretations.Interpretation_Set_Index'Image (J));
    268344         end loop;
    269 
    270          for J of Down loop
    271             Put_Line
    272               ("     DOWN" &
    273                  Gela.Interpretations.Interpretation_Index'Image (J));
    274          end loop;
    275345      end On_Tuple;
    276346
    277    end Dump_Interpretation;
     347   end Dump_Up_Interpretation;
     348
    278349
    279350   procedure Dump
  • trunk/ada-2012/src/semantic/gela-plain_interpretations.adb

    r403 r404  
    1919      overriding procedure Visit
    2020        (Self   : Cursor;
    21          Target : access Gela.Interpretations.Visiter'Class) is null;
     21         Target : access Gela.Interpretations.Up_Visiter'Class) is null;
    2222
    2323      overriding function Get_Index
     
    167167   is
    168168      package Each is
    169          type Visiter is new Gela.Interpretations.Visiter with null record;
     169         type Visiter is new Gela.Interpretations.Up_Visiter with null record;
    170170         --  Only tuples are expected here
    171171
    172172         overriding procedure On_Tuple
    173173           (V     : in out Visiter;
    174             Value : Gela.Interpretations.Interpretation_Set_Index_Array;
    175             Down  : Gela.Interpretations.Interpretation_Index_Array);
     174            Value : Gela.Interpretations.Interpretation_Set_Index_Array);
    176175
    177176      end Each;
     
    181180         overriding procedure On_Tuple
    182181           (V     : in out Visiter;
    183             Value : Gela.Interpretations.Interpretation_Set_Index_Array;
    184             Down  : Gela.Interpretations.Interpretation_Index_Array)
    185          is
    186             pragma Unreferenced (V, Down);
     182            Value : Gela.Interpretations.Interpretation_Set_Index_Array)
     183         is
     184            pragma Unreferenced (V);
    187185            use type Gela.Interpretations.Interpretation_Set_Index_Array;
    188186
     
    227225   is
    228226      package Each is
    229          type Visiter is new Gela.Interpretations.Visiter with record
     227         type Visiter is new Gela.Interpretations.Down_Visiter with record
    230228            Name   : Gela.Elements.Defining_Names.Defining_Name_Access;
    231229         end record;
     
    378376     (Self   : in out Interpretation_Manager;
    379377      Index  : Gela.Interpretations.Interpretation_Index;
    380       Target : in out Gela.Interpretations.Visiter'Class)
     378      Target : in out Gela.Interpretations.Down_Visiter'Class)
    381379   is
    382380      package Switch is
     
    478476            pragma Unreferenced (Self);
    479477         begin
    480             Target.On_Expression_Category
    481               (Kinds  => Value.Kinds,
    482                Down   => Value.Down);
     478            raise Program_Error with "Unexpected up interpretation in down";
    483479         end Expression_Category;
    484480
     
    508504            pragma Unreferenced (Self);
    509505         begin
    510             Target.On_Symbol
    511               (Symbol => Value.Get_Symbol,
    512                Down   => Value.Down);
     506            null;
     507            --  raise Program_Er with "Unexpected up interpretation in down";
    513508         end Symbol;
    514509
     
    523518            pragma Unreferenced (Self);
    524519         begin
    525             Target.On_Tuple (Value.Value, (1 .. 0 => 0));
     520            raise Program_Error with "Unexpected up interpretation in down";
    526521         end Tuple;
    527522
     
    536531            pragma Unreferenced (Self);
    537532         begin
    538             Target.On_Tuple ((1 .. 0 => 0), Value.Down);
     533            Target.On_Tuple (Value.Down);
    539534         end Chosen_Tuple;
    540535
  • trunk/ada-2012/src/semantic/gela-plain_interpretations.ads

    r403 r404  
    116116     (Self   : in out Interpretation_Manager;
    117117      Index  : Gela.Interpretations.Interpretation_Index;
    118       Target : in out Gela.Interpretations.Visiter'Class);
     118      Target : in out Gela.Interpretations.Down_Visiter'Class);
    119119   --  For given interpretations call Target visiter
    120120
  • trunk/ada-2012/src/semantic/gela-plian_int_sets.adb

    r403 r404  
    207207   overriding procedure Visit
    208208     (Self   : Cursor;
    209       Target : access Gela.Interpretations.Visiter'Class)
     209      Target : access Gela.Interpretations.Up_Visiter'Class)
    210210   is
    211211      package Each is
     
    255255         begin
    256256            Target.On_Defining_Name
    257               (Name => Value.Name,
    258                Down => Value.Down);
     257              (Name   => Value.Name,
     258               Cursor => Visit.Self);
    259259         end Defining_Name;
    260260
     
    266266         begin
    267267            Target.On_Expression
    268               (Tipe => Value.Expression_Type,
    269                Down => Value.Down);
     268              (Tipe   => Value.Expression_Type,
     269               Cursor => Visit.Self);
    270270         end Expression;
    271271
     
    277277         begin
    278278            Target.On_Expression_Category
    279               (Kinds => Value.Kinds,
    280                Down  => Value.Down);
     279              (Kinds  => Value.Kinds,
     280               Cursor => Visit.Self);
    281281         end Expression_Category;
    282282
     
    288288         begin
    289289            Target.On_Attr_Function
    290               (Kind => Value.Kind,
    291                Down => Value.Down);
     290              (Kind   => Value.Kind,
     291               Cursor => Visit.Self);
    292292         end Attr_Function;
    293293
     
    299299         begin
    300300            Target.On_Placeholder
    301               (Kind => Value.Placeholder_Kind,
    302                Down => Value.Down);
     301              (Kind   => Value.Placeholder_Kind,
     302               Cursor => Visit.Self);
    303303         end Placeholder;
    304304
     
    311311            Target.On_Symbol
    312312              (Symbol => Value.Get_Symbol,
    313                Down   => Value.Down);
     313               Cursor => Visit.Self);
    314314         end Symbol;
    315315
     
    320320            pragma Unreferenced (Self);
    321321         begin
    322             Target.On_Tuple
    323               (Value => Value.Value,
    324                Down  => (1 .. 0 => 0));
     322            Target.On_Tuple (Value.Value);
    325323         end Tuple;
    326324
     
    329327            Value : Gela.Int.Tuples.Chosen_Tuple)
    330328         is
    331             pragma Unreferenced (Self);
    332          begin
    333             Target.On_Tuple
    334               (Value => (1 .. 0 => 0),
    335                Down  => Value.Down);
     329            pragma Unreferenced (Self, Value);
     330         begin
     331            raise Constraint_Error with "Unexpected down interpretation in up";
    336332         end Chosen_Tuple;
    337333
  • trunk/ada-2012/src/semantic/gela-plian_int_sets.ads

    r363 r404  
    8282   overriding procedure Visit
    8383     (Self   : Cursor;
    84       Target : access Gela.Interpretations.Visiter'Class);
     84      Target : access Gela.Interpretations.Up_Visiter'Class);
    8585
    8686   overriding function Get_Index
  • trunk/ada-2012/src/semantic/gela-resolve.adb

    r396 r404  
    2727     (Comp   : Gela.Compilations.Compilation_Access;
    2828      Set    : Gela.Interpretations.Interpretation_Set_Index;
    29       Target : in out Gela.Interpretations.Visiter'Class);
    30 
    31    Use_This_Interretation : constant Gela.Interpretations.Interpretation_Index
    32      := Gela.Interpretations.Interpretation_Index'Last;
     29      Target : in out Gela.Interpretations.Up_Visiter'Class);
    3330
    3431   procedure Wrap_Tuple
    35      (Self   : access Gela.Interpretations.Visiter'Class;
     32     (Self   : access Gela.Interpretations.Up_Visiter'Class;
    3633      IM     : Gela.Interpretations.Interpretation_Manager_Access;
    3734      Value  : Gela.Interpretations.Interpretation_Set_Index_Array;
     
    4138   --  resolve. Read resolved value from Found. Wrap each resolved value in
    4239   --  down interpretation, then return its index as Chosen
    43    --  When Found = Use_This_Interretation use index of current interpretation.
    4440
    4541   ----------------------
     
    5652      pragma Unreferenced (Env);
    5753      package Each is
    58          type Visiter is new Gela.Interpretations.Visiter with record
     54         type Visiter is new Gela.Interpretations.Up_Visiter with record
    5955            Result : Gela.Interpretations.Interpretation_Index := 0;
    6056         end record;
     
    6359           (Self   : in out Visiter;
    6460            Tipe   : Gela.Semantic_Types.Type_Index;
    65             Down   : Gela.Interpretations.Interpretation_Index_Array);
     61            Cursor : Gela.Interpretations.Cursor'Class);
    6662
    6763      end Each;
     
    7268           (Self   : in out Visiter;
    7369            Tipe   : Gela.Semantic_Types.Type_Index;
    74             Down   : Gela.Interpretations.Interpretation_Index_Array)
    75          is
    76             pragma Unreferenced (Down);
     70            Cursor : Gela.Interpretations.Cursor'Class)
     71         is
     72            pragma Unreferenced (Cursor);
    7773         begin
    7874            To_Type (Comp    => Comp,
     
    179175   is
    180176      package Each_Tuple is
    181          type Visiter is new Gela.Interpretations.Visiter with null record;
    182 
    183          overriding procedure On_Tuple
    184            (Self  : in out Visiter;
    185             Value : Gela.Interpretations.Interpretation_Set_Index_Array;
    186             Down  : Gela.Interpretations.Interpretation_Index_Array);
     177         type Visiter is new Gela.Interpretations.Up_Visiter with record
     178            Type_Index : Gela.Semantic_Types.Type_Index;
     179         end record;
     180
     181         overriding procedure On_Tuple
     182           (Self  : in out Visiter;
     183            Value : Gela.Interpretations.Interpretation_Set_Index_Array);
    187184
    188185      end Each_Tuple;
    189186
    190187      package Each_Choice is
    191          type Visiter is new Gela.Interpretations.Visiter with record
    192             Index : aliased Gela.Interpretations.Interpretation_Index;
     188         type Visiter is new Gela.Interpretations.Up_Visiter with record
     189            Type_Index : Gela.Semantic_Types.Type_Index;
     190            Index      : aliased Gela.Interpretations.Interpretation_Index;
    193191         end record;
    194192
    195193         overriding procedure On_Tuple
    196194           (Self  : in out Visiter;
    197             Value : Gela.Interpretations.Interpretation_Set_Index_Array;
    198             Down  : Gela.Interpretations.Interpretation_Index_Array);
     195            Value : Gela.Interpretations.Interpretation_Set_Index_Array);
    199196
    200197      end Each_Choice;
     198
     199      package Each_Expr is
     200         type Visiter is new Gela.Interpretations.Up_Visiter with record
     201            Result : Gela.Interpretations.Interpretation_Index := 0;
     202         end record;
     203
     204         overriding procedure On_Expression
     205           (Self   : in out Visiter;
     206            Tipe   : Gela.Semantic_Types.Type_Index;
     207            Cursor : Gela.Interpretations.Cursor'Class);
     208
     209      end Each_Expr;
    201210
    202211      IM   : constant Gela.Interpretations.Interpretation_Manager_Access
    203212        := Comp.Context.Interpretation_Manager;
    204213
    205       Type_Index : Gela.Semantic_Types.Type_Index;
    206 
    207214      package body Each_Choice is
    208215
    209216         overriding procedure On_Tuple
    210217           (Self  : in out Visiter;
    211             Value : Gela.Interpretations.Interpretation_Set_Index_Array;
    212             Down  : Gela.Interpretations.Interpretation_Index_Array)
    213          is
    214             pragma Unreferenced (Down);
     218            Value : Gela.Interpretations.Interpretation_Set_Index_Array)
     219         is
    215220
    216221            Chosen : Gela.Interpretations.Interpretation_Index;
     
    221226               To_Type
    222227                 (Comp    => Comp,
    223                   Type_Up => Type_Index,
     228                  Type_Up => Self.Type_Index,
    224229                  Expr_Up => Value (J),
    225230                  Result  => List (J));
     
    241246         overriding procedure On_Tuple
    242247           (Self  : in out Visiter;
    243             Value : Gela.Interpretations.Interpretation_Set_Index_Array;
    244             Down  : Gela.Interpretations.Interpretation_Index_Array)
    245          is
    246             pragma Unreferenced (Down, Self);
    247             V      : aliased Each_Choice.Visiter;
     248            Value : Gela.Interpretations.Interpretation_Set_Index_Array)
     249         is
     250            V  : aliased Each_Choice.Visiter :=
     251              (Type_Index => Self.Type_Index, Index => 0);
    248252            Chosen : Gela.Interpretations.Interpretation_Index;
    249253         begin
     
    260264      end Each_Tuple;
    261265
    262       Index      : Gela.Interpretations.Interpretation_Index;
    263       Tuple_Visiter : aliased Each_Tuple.Visiter;
    264       Cursor        : Gela.Interpretations.Cursor'Class :=
    265         IM.Get_Cursor (Tuple);
    266    begin
    267       Get_Subtype
    268         (Comp,
    269          Env    => 0,
    270          Set    => Type_Up,
    271          Index  => Index,
    272          Result => Type_Index);
    273 
    274       while Cursor.Has_Element loop
    275          Cursor.Visit (Tuple_Visiter'Access);
    276          Cursor.Next;
    277       end loop;
     266      package body Each_Expr is
     267
     268         overriding procedure On_Expression
     269           (Self   : in out Visiter;
     270            Tipe   : Gela.Semantic_Types.Type_Index;
     271            Cursor : Gela.Interpretations.Cursor'Class)
     272         is
     273            pragma Unreferenced (Cursor, Self);
     274            Tuple_Visiter : aliased Each_Tuple.Visiter := (Type_Index => Tipe);
     275            Pos  : Gela.Interpretations.Cursor'Class := IM.Get_Cursor (Tuple);
     276         begin
     277            while Pos.Has_Element loop
     278               Pos.Visit (Tuple_Visiter'Access);
     279               Pos.Next;
     280            end loop;
     281         end On_Expression;
     282
     283      end Each_Expr;
     284
     285      Expr_Visiter : aliased Each_Expr.Visiter;
     286   begin
     287      Result := 0;
     288      Each_Expression (Comp   => Comp,
     289                       Set    => Type_Up,
     290                       Target => Expr_Visiter);
    278291   end Case_Statement;
    279292
     
    310323
    311324      package Each_Choice is
    312          type Visiter is new Gela.Interpretations.Visiter with record
     325         type Visiter is new Gela.Interpretations.Up_Visiter with record
    313326            Index : aliased Gela.Interpretations.Interpretation_Index := 0;
    314327         end record;
     
    317330           (Self   : in out Visiter;
    318331            Tipe   : Gela.Semantic_Types.Type_Index;
    319             Down   : Gela.Interpretations.Interpretation_Index_Array);
    320 
    321          overriding procedure On_Tuple
    322            (Self  : in out Visiter;
    323             Value : Gela.Interpretations.Interpretation_Set_Index_Array;
    324             Down  : Gela.Interpretations.Interpretation_Index_Array);
     332            Cursor : Gela.Interpretations.Cursor'Class);
     333
     334         overriding procedure On_Tuple
     335           (Self  : in out Visiter;
     336            Value : Gela.Interpretations.Interpretation_Set_Index_Array);
    325337
    326338         overriding procedure On_Symbol
    327339           (Self   : in out Visiter;
    328340            Symbol : Gela.Lexical_Types.Symbol;
    329             Down   : Gela.Interpretations.Interpretation_Index_Array);
     341            Cursor : Gela.Interpretations.Cursor'Class);
    330342
    331343      end Each_Choice;
    332344
    333345      package Each_Tuple is
    334          type Visiter is new Gela.Interpretations.Visiter with null record;
    335 
    336          overriding procedure On_Tuple
    337            (Self  : in out Visiter;
    338             Value : Gela.Interpretations.Interpretation_Set_Index_Array;
    339             Down  : Gela.Interpretations.Interpretation_Index_Array);
     346         type Visiter is new Gela.Interpretations.Up_Visiter with null record;
     347
     348         overriding procedure On_Tuple
     349           (Self  : in out Visiter;
     350            Value : Gela.Interpretations.Interpretation_Set_Index_Array);
    340351
    341352      end Each_Tuple;
     
    350361           (Self   : in out Visiter;
    351362            Tipe   : Gela.Semantic_Types.Type_Index;
    352             Down   : Gela.Interpretations.Interpretation_Index_Array)
    353          is
    354             pragma Unreferenced (Tipe, Down);
    355          begin
    356             Self.Index := Use_This_Interretation;
     363            Cursor : Gela.Interpretations.Cursor'Class)
     364         is
     365            pragma Unreferenced (Tipe);
     366         begin
     367            Self.Index := Cursor.Get_Index;
    357368         end On_Expression;
    358369
     
    360371           (Self   : in out Visiter;
    361372            Symbol : Gela.Lexical_Types.Symbol;
    362             Down   : Gela.Interpretations.Interpretation_Index_Array)
    363          is
    364             pragma Unreferenced (Down);
     373            Cursor : Gela.Interpretations.Cursor'Class)
     374         is
     375            pragma Unreferenced (Cursor);
    365376            use type Gela.Type_Views.Type_View_Access;
    366377
     
    384395         overriding procedure On_Tuple
    385396           (Self  : in out Visiter;
    386             Value : Gela.Interpretations.Interpretation_Set_Index_Array;
    387             Down  : Gela.Interpretations.Interpretation_Index_Array)
    388          is
    389             pragma Unreferenced (Down);
     397            Value : Gela.Interpretations.Interpretation_Set_Index_Array)
     398         is
    390399            use type Gela.Semantic_Types.Type_Index;
    391400
     
    481490         overriding procedure On_Tuple
    482491           (Self  : in out Visiter;
    483             Value : Gela.Interpretations.Interpretation_Set_Index_Array;
    484             Down  : Gela.Interpretations.Interpretation_Index_Array)
    485          is
    486             pragma Unreferenced (Down, Self);
     492            Value : Gela.Interpretations.Interpretation_Set_Index_Array)
     493         is
     494            pragma Unreferenced (Self);
    487495            Chosen : Gela.Interpretations.Interpretation_Index;
    488496            V      : aliased Each_Choice.Visiter;
     
    571579     (Comp   : Gela.Compilations.Compilation_Access;
    572580      Set    : Gela.Interpretations.Interpretation_Set_Index;
    573       Target : in out Gela.Interpretations.Visiter'Class)
     581      Target : in out Gela.Interpretations.Up_Visiter'Class)
    574582   is
    575583      package Each is
    576          type Visiter is new Gela.Interpretations.Visiter with record
     584         type Visiter is new Gela.Interpretations.Up_Visiter with record
    577585            null;
    578586         end record;
     
    581589           (Self   : in out Visiter;
    582590            Name   : Gela.Elements.Defining_Names.Defining_Name_Access;
    583             Down   : Gela.Interpretations.Interpretation_Index_Array);
     591            Cursor : Gela.Interpretations.Cursor'Class);
    584592
    585593         overriding procedure On_Expression
    586594           (Self   : in out Visiter;
    587595            Tipe   : Gela.Semantic_Types.Type_Index;
    588             Down   : Gela.Interpretations.Interpretation_Index_Array);
     596            Cursor : Gela.Interpretations.Cursor'Class);
    589597
    590598      end Each;
     
    602610           (Self   : in out Visiter;
    603611            Name   : Gela.Elements.Defining_Names.Defining_Name_Access;
    604             Down   : Gela.Interpretations.Interpretation_Index_Array)
     612            Cursor : Gela.Interpretations.Cursor'Class)
    605613         is
    606614            pragma Unreferenced (Self);
     
    611619              TM.Type_Of_Object_Declaration (Decl);
    612620         begin
    613             Target.On_Expression (Type_Index, Down);
     621            Target.On_Expression (Type_Index, Cursor);
    614622         end On_Defining_Name;
    615623
     
    617625           (Self   : in out Visiter;
    618626            Tipe   : Gela.Semantic_Types.Type_Index;
    619             Down   : Gela.Interpretations.Interpretation_Index_Array)
     627            Cursor : Gela.Interpretations.Cursor'Class)
    620628         is
    621629            pragma Unreferenced (Self);
    622630         begin
    623             Target.On_Expression (Tipe, Down);
     631            Target.On_Expression (Tipe, Cursor);
    624632         end On_Expression;
    625633
     
    656664
    657665      package Each_Prefix is
    658          type Visiter is new Gela.Interpretations.Visiter with record
     666         type Visiter is new Gela.Interpretations.Up_Visiter with null record;
     667
     668         overriding procedure On_Defining_Name
     669           (Self   : in out Visiter;
     670            Name   : Gela.Elements.Defining_Names.Defining_Name_Access;
     671            Cursor : Gela.Interpretations.Cursor'Class);
     672
     673      end Each_Prefix;
     674
     675      package Each_Arg is
     676         type Visiter is new Gela.Interpretations.Up_Visiter with record
    659677            Index  : Gela.Interpretations.Interpretation_Index := 0;
    660678         end record;
    661679
    662          overriding procedure On_Defining_Name
    663            (Self   : in out Visiter;
    664             Name   : Gela.Elements.Defining_Names.Defining_Name_Access;
    665             Down   : Gela.Interpretations.Interpretation_Index_Array);
    666 
    667       end Each_Prefix;
    668 
    669       package Each_Arg is
    670          type Visiter is new Gela.Interpretations.Visiter with record
    671             Index  : Gela.Interpretations.Interpretation_Index := 0;
    672          end record;
    673 
    674          overriding procedure On_Tuple
    675            (Self  : in out Visiter;
    676             Value : Gela.Interpretations.Interpretation_Set_Index_Array;
    677             Down  : Gela.Interpretations.Interpretation_Index_Array);
     680         overriding procedure On_Tuple
     681           (Self  : in out Visiter;
     682            Value : Gela.Interpretations.Interpretation_Set_Index_Array);
    678683
    679684      end Each_Arg;
    680685
    681686      package Each_Association is
    682          type Visiter is new Gela.Interpretations.Visiter with record
     687         type Visiter is new Gela.Interpretations.Up_Visiter with record
    683688            Index  : aliased Gela.Interpretations.Interpretation_Index := 0;
    684689         end record;
     
    686691         overriding procedure On_Tuple
    687692           (Self  : in out Visiter;
    688             Value : Gela.Interpretations.Interpretation_Set_Index_Array;
    689             Down  : Gela.Interpretations.Interpretation_Index_Array);
     693            Value : Gela.Interpretations.Interpretation_Set_Index_Array);
    690694
    691695      end Each_Association;
     
    697701         overriding procedure On_Tuple
    698702           (Self  : in out Visiter;
    699             Value : Gela.Interpretations.Interpretation_Set_Index_Array;
    700             Down  : Gela.Interpretations.Interpretation_Index_Array)
    701          is
    702             pragma Unreferenced (Down);
     703            Value : Gela.Interpretations.Interpretation_Set_Index_Array)
     704         is
    703705
    704706            V      : aliased Each_Association.Visiter;
     
    723725         overriding procedure On_Tuple
    724726           (Self  : in out Visiter;
    725             Value : Gela.Interpretations.Interpretation_Set_Index_Array;
    726             Down  : Gela.Interpretations.Interpretation_Index_Array)
    727          is
    728             pragma Unreferenced (Down);
     727            Value : Gela.Interpretations.Interpretation_Set_Index_Array)
     728         is
    729729
    730730            Chosen : Gela.Interpretations.Interpretation_Index;
     
    756756           (Self   : in out Visiter;
    757757            Name   : Gela.Elements.Defining_Names.Defining_Name_Access;
    758             Down   : Gela.Interpretations.Interpretation_Index_Array)
    759          is
    760             pragma Unreferenced (Name, Down);
    761             Visiter : aliased Each_Arg.Visiter := (Index => Self.Index);
     758            Cursor : Gela.Interpretations.Cursor'Class)
     759         is
     760            pragma Unreferenced (Name, Self);
     761            Visiter : aliased Each_Arg.Visiter := (Index => Cursor.Get_Index);
    762762            Arg     : Gela.Interpretations.Cursor'Class :=
    763763              IM.Get_Cursor (Args);
     
    784784      while Cursor.Has_Element loop
    785785         declare
    786             Visiter : aliased Each_Prefix.Visiter :=
    787               (Index => Cursor.Get_Index);
     786            Visiter : aliased Each_Prefix.Visiter;
    788787         begin
    789788            Cursor.Visit (Visiter'Access);
     
    807806
    808807      package Each is
    809          type Visiter is new Gela.Interpretations.Visiter with record
     808         type Visiter is new Gela.Interpretations.Up_Visiter with record
    810809            Index  : Gela.Interpretations.Interpretation_Index := 0;
    811810            Result : Gela.Semantic_Types.Type_Index := 0;
     
    815814           (Self   : in out Visiter;
    816815            Name   : Gela.Elements.Defining_Names.Defining_Name_Access;
    817             Down   : Gela.Interpretations.Interpretation_Index_Array);
     816            Cursor : Gela.Interpretations.Cursor'Class);
    818817
    819818      end Each;
     
    824823      TM : constant Gela.Type_Managers.Type_Manager_Access :=
    825824        Comp.Context.Types;
    826 
    827       Cursor : Gela.Interpretations.Cursor'Class := IM.Get_Cursor (Set);
    828825
    829826      ----------
     
    836833           (Self   : in out Visiter;
    837834            Name   : Gela.Elements.Defining_Names.Defining_Name_Access;
    838             Down   : Gela.Interpretations.Interpretation_Index_Array)
     835            Cursor : Gela.Interpretations.Cursor'Class)
    839836         is
    840837            pragma Unreferenced (Self);
    841             pragma Unreferenced (Down);
    842838         begin
    843839            Self.Result := TM.Type_By_Name (Name);
     
    847843      end Each;
    848844
     845      Cursor  : Gela.Interpretations.Cursor'Class := IM.Get_Cursor (Set);
    849846      Visiter : aliased Each.Visiter;
    850847   begin
     
    867864
    868865      package Each is
    869          type Visiter is new Gela.Interpretations.Visiter with record
     866         type Visiter is new Gela.Interpretations.Up_Visiter with record
    870867            Prev   : Gela.Interpretations.Interpretation_Index := 0;
    871868            Result : Gela.Interpretations.Interpretation_Index := 0;
     
    875872           (Self   : in out Visiter;
    876873            Symbol : Gela.Lexical_Types.Symbol;
    877             Down   : Gela.Interpretations.Interpretation_Index_Array);
     874            Cursor : Gela.Interpretations.Cursor'Class);
    878875
    879876      end Each;
     
    884881           (Self   : in out Visiter;
    885882            Symbol : Gela.Lexical_Types.Symbol;
    886             Down   : Gela.Interpretations.Interpretation_Index_Array)
    887          is
    888             pragma Unreferenced (Symbol, Down);
     883            Cursor : Gela.Interpretations.Cursor'Class)
     884         is
     885            pragma Unreferenced (Symbol, Cursor);
    889886         begin
    890887            --  Skip symbols
     
    967964   is
    968965      package Each is
    969          type Visiter is new Gela.Interpretations.Visiter with null record;
     966         type Visiter is new Gela.Interpretations.Up_Visiter with null record;
    970967
    971968         overriding procedure On_Defining_Name
    972969           (Self   : in out Visiter;
    973970            Name   : Gela.Elements.Defining_Names.Defining_Name_Access;
    974             Down   : Gela.Interpretations.Interpretation_Index_Array);
     971            Cursor : Gela.Interpretations.Cursor'Class);
    975972
    976973      end Each;
     
    981978      ES : constant Gela.Environments.Environment_Set_Access :=
    982979        Comp.Context.Environment_Set;
    983 
    984       Cursor : Gela.Interpretations.Cursor'Class := IM.Get_Cursor (Prefix);
    985980
    986981      ----------
     
    993988           (Self   : in out Visiter;
    994989            Name   : Gela.Elements.Defining_Names.Defining_Name_Access;
    995             Down   : Gela.Interpretations.Interpretation_Index_Array)
     990            Cursor : Gela.Interpretations.Cursor'Class)
    996991         is
    997992            pragma Unreferenced (Self);
    998             pragma Unreferenced (Down);
    999993            Found : aliased Boolean;
    1000             NC : Gela.Defining_Name_Cursors.Defining_Name_Cursor'Class
    1001               := ES.Visible (Env, Name, Symbol, Found'Access);
     994            NC : Gela.Defining_Name_Cursors.Defining_Name_Cursor'Class :=
     995              ES.Visible (Env, Name, Symbol, Found'Access);
    1002996         begin
    1003997            while NC.Has_Element loop
     
    10131007      end Each;
    10141008
     1009      Cursor  : Gela.Interpretations.Cursor'Class := IM.Get_Cursor (Prefix);
    10151010      Visiter : aliased Each.Visiter;
    10161011   begin
     
    10931088
    10941089      package Each is
    1095          type Visiter is new Gela.Interpretations.Visiter with record
     1090         type Visiter is new Gela.Interpretations.Up_Visiter with record
    10961091            null;
    10971092         end record;
     
    11001095           (Self   : in out Visiter;
    11011096            Tipe   : Gela.Semantic_Types.Type_Index;
    1102             Down   : Gela.Interpretations.Interpretation_Index_Array);
     1097            Cursor : Gela.Interpretations.Cursor'Class);
    11031098
    11041099      end Each;
     
    11131108           (Self   : in out Visiter;
    11141109            Tipe   : Gela.Semantic_Types.Type_Index;
    1115             Down   : Gela.Interpretations.Interpretation_Index_Array)
    1116          is
    1117             pragma Unreferenced (Self);
    1118             pragma Unreferenced (Down);
     1110            Cursor : Gela.Interpretations.Cursor'Class)
     1111         is
     1112            pragma Unreferenced (Self, Cursor);
    11191113         begin
    11201114            To_Type
     
    11761170
    11771171      package Each is
    1178          type Visiter is new Gela.Interpretations.Visiter with record
     1172         type Visiter is new Gela.Interpretations.Up_Visiter with record
    11791173            Type_Index : Gela.Semantic_Types.Type_Index;
    11801174            Index      : Gela.Interpretations.Interpretation_Index := 0;
     
    11841178           (Self   : in out Visiter;
    11851179            Name   : Gela.Elements.Defining_Names.Defining_Name_Access;
    1186             Down   : Gela.Interpretations.Interpretation_Index_Array);
     1180            Cursor : Gela.Interpretations.Cursor'Class);
    11871181
    11881182         overriding procedure On_Expression
    11891183           (Self   : in out Visiter;
    11901184            Tipe   : Gela.Semantic_Types.Type_Index;
    1191             Down   : Gela.Interpretations.Interpretation_Index_Array);
    1192 
    1193          overriding procedure On_Tuple
    1194            (Self  : in out Visiter;
    1195             Value : Gela.Interpretations.Interpretation_Set_Index_Array;
    1196             Down  : Gela.Interpretations.Interpretation_Index_Array);
     1185            Cursor : Gela.Interpretations.Cursor'Class);
     1186
     1187         overriding procedure On_Tuple
     1188           (Self  : in out Visiter;
     1189            Value : Gela.Interpretations.Interpretation_Set_Index_Array);
    11971190         --  Tuple is interpretation of aggregate
    11981191
     
    12021195         --  Visiter for interpretation of an association of aggregate
    12031196
    1204          type Visiter is new Gela.Interpretations.Visiter with record
     1197         type Visiter is new Gela.Interpretations.Up_Visiter with record
    12051198            Index : aliased Gela.Interpretations.Interpretation_Index;
    12061199         end record;
     
    12081201         overriding procedure On_Tuple
    12091202           (Self  : in out Visiter;
    1210             Value : Gela.Interpretations.Interpretation_Set_Index_Array;
    1211             Down  : Gela.Interpretations.Interpretation_Index_Array);
     1203            Value : Gela.Interpretations.Interpretation_Set_Index_Array);
    12121204
    12131205      end Each_Association;
     
    12161208         --  Visiter for interpretation of an symbol of association
    12171209
    1218          type Visiter is new Gela.Interpretations.Visiter with record
     1210         type Visiter is new Gela.Interpretations.Up_Visiter with record
    12191211            Index          : aliased Gela.Interpretations.Interpretation_Index;
    12201212            Component_Type : Gela.Semantic_Types.Type_Index;
     
    12241216           (Self   : in out Visiter;
    12251217            Symbol : Gela.Lexical_Types.Symbol;
    1226             Down   : Gela.Interpretations.Interpretation_Index_Array);
     1218            Cursor : Gela.Interpretations.Cursor'Class);
    12271219
    12281220      end Each_Symbol;
     
    12351227
    12361228      View : constant Gela.Type_Views.Type_View_Access := TM.Get (Type_Up);
    1237 
    1238       Cursor : Gela.Interpretations.Cursor'Class := IM.Get_Cursor (Expr_Up);
    12391229
    12401230      ----------
     
    12471237           (Self   : in out Visiter;
    12481238            Name   : Gela.Elements.Defining_Names.Defining_Name_Access;
    1249             Down   : Gela.Interpretations.Interpretation_Index_Array)
     1239            Cursor : Gela.Interpretations.Cursor'Class)
    12501240         is
    12511241            pragma Unreferenced (Name);
    1252             pragma Unreferenced (Down);
    12531242         begin
    12541243            Self.Index := Cursor.Get_Index;
     
    12581247           (Self   : in out Visiter;
    12591248            Tipe   : Gela.Semantic_Types.Type_Index;
    1260             Down   : Gela.Interpretations.Interpretation_Index_Array)
     1249            Cursor : Gela.Interpretations.Cursor'Class)
    12611250         is
    12621251            pragma Unreferenced (Tipe);
    1263             pragma Unreferenced (Down);
    12641252         begin
    12651253            Self.Index := Cursor.Get_Index;
     
    12681256         overriding procedure On_Tuple
    12691257           (Self  : in out Visiter;
    1270             Value : Gela.Interpretations.Interpretation_Set_Index_Array;
    1271             Down  : Gela.Interpretations.Interpretation_Index_Array)
     1258            Value : Gela.Interpretations.Interpretation_Set_Index_Array)
    12721259         is
    12731260            pragma Unreferenced (Self);
    1274             pragma Unreferenced (Down);
    12751261            use type Gela.Type_Views.Type_View_Access;
    12761262            V      : aliased Each_Association.Visiter;
     
    12961282         overriding procedure On_Tuple
    12971283           (Self  : in out Visiter;
    1298             Value : Gela.Interpretations.Interpretation_Set_Index_Array;
    1299             Down  : Gela.Interpretations.Interpretation_Index_Array)
    1300          is
    1301             pragma Unreferenced (Down);
     1284            Value : Gela.Interpretations.Interpretation_Set_Index_Array)
     1285         is
    13021286
    13031287            V      : aliased Each_Symbol.Visiter;
     
    13311315           (Self   : in out Visiter;
    13321316            Symbol : Gela.Lexical_Types.Symbol;
    1333             Down   : Gela.Interpretations.Interpretation_Index_Array)
    1334          is
    1335             pragma Unreferenced (Down);
     1317            Cursor : Gela.Interpretations.Cursor'Class)
     1318         is
     1319            pragma Unreferenced (Cursor);
    13361320
    13371321            Name : constant Gela.Elements.Defining_Names.Defining_Name_Access
     
    13501334      end Each_Symbol;
    13511335
     1336      Cursor  : Gela.Interpretations.Cursor'Class := IM.Get_Cursor (Expr_Up);
    13521337      Visiter : aliased Each.Visiter;
    13531338   begin
     
    14111396
    14121397      package Each_Variant is
    1413          type Visiter is new Gela.Interpretations.Visiter with record
     1398         type Visiter is new Gela.Interpretations.Up_Visiter with record
    14141399            null;
    14151400         end record;
     
    14171402         overriding procedure On_Tuple
    14181403           (Self  : in out Visiter;
    1419             Value : Gela.Interpretations.Interpretation_Set_Index_Array;
    1420             Down  : Gela.Interpretations.Interpretation_Index_Array);
     1404            Value : Gela.Interpretations.Interpretation_Set_Index_Array);
    14211405
    14221406      end Each_Variant;
    14231407
    14241408      package Each_Choice is
    1425          type Visiter is new Gela.Interpretations.Visiter with record
     1409         type Visiter is new Gela.Interpretations.Up_Visiter with record
    14261410            Index  : aliased Gela.Interpretations.Interpretation_Index := 0;
    14271411         end record;
     
    14291413         overriding procedure On_Tuple
    14301414           (Self  : in out Visiter;
    1431             Value : Gela.Interpretations.Interpretation_Set_Index_Array;
    1432             Down  : Gela.Interpretations.Interpretation_Index_Array);
     1415            Value : Gela.Interpretations.Interpretation_Set_Index_Array);
    14331416
    14341417      end Each_Choice;
     
    14411424         overriding procedure On_Tuple
    14421425           (Self  : in out Visiter;
    1443             Value : Gela.Interpretations.Interpretation_Set_Index_Array;
    1444             Down  : Gela.Interpretations.Interpretation_Index_Array)
    1445          is
    1446             pragma Unreferenced (Down, Self);
     1426            Value : Gela.Interpretations.Interpretation_Set_Index_Array)
     1427         is
     1428            pragma Unreferenced (Self);
    14471429
    14481430            V      : aliased Each_Choice.Visiter;
     
    14651447         overriding procedure On_Tuple
    14661448           (Self  : in out Visiter;
    1467             Value : Gela.Interpretations.Interpretation_Set_Index_Array;
    1468             Down  : Gela.Interpretations.Interpretation_Index_Array)
    1469          is
    1470             pragma Unreferenced (Down);
    1471 
     1449            Value : Gela.Interpretations.Interpretation_Set_Index_Array)
     1450         is
    14721451            Chosen : Gela.Interpretations.Interpretation_Index;
    14731452            List   : Gela.Interpretations.Interpretation_Index_Array
     
    15141493
    15151494   procedure Wrap_Tuple
    1516      (Self   : access Gela.Interpretations.Visiter'Class;
     1495     (Self   : access Gela.Interpretations.Up_Visiter'Class;
    15171496      IM     : Gela.Interpretations.Interpretation_Manager_Access;
    15181497      Value  : Gela.Interpretations.Interpretation_Set_Index_Array;
     
    15331512               Cursor.Visit (Self);
    15341513
    1535                if Found.all = Use_This_Interretation then
    1536                   List (J) := Cursor.Get_Index;
    1537                   Found.all := 0;
    1538                elsif Found.all /= 0 then
     1514               if Found.all /= 0 then
    15391515                  List (J) := Found.all;
    15401516                  Found.all := 0;
Note: See TracChangeset for help on using the changeset viewer.