Changeset 358


Ignore:
Timestamp:
Dec 23, 2014, 6:56:05 AM (6 years ago)
Author:
Maxim Reznik
Message:

Fix regressions

Drop (left) expicit convertions from Interpretation_Index to
Interpretation_Set_Index and replace them with iteration over
cursors.

Location:
trunk/ada-2012/src/semantic
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/ada-2012/src/semantic/gela-int-attr_functions.adb

    r286 r358  
    88
    99   function Create
    10      (Children : Natural;
     10     (Down     : Gela.Interpretations.Interpretation_Index_Array;
    1111      Kind     : Gela.Lexical_Types.Predefined_Symbols.Attribute)
    1212      return Attr_Function is
    1313   begin
    14       return (Length => Children,
     14      return (Length => Down'Length,
    1515              Kind   => Kind,
    16               Down   => (others => 0));
     16              Down   => Down);
    1717   end Create;
    1818
  • trunk/ada-2012/src/semantic/gela-int-attr_functions.ads

    r286 r358  
    99
    1010   function Create
    11      (Children : Natural;
     11     (Down     : Gela.Interpretations.Interpretation_Index_Array;
    1212      Kind     : Gela.Lexical_Types.Predefined_Symbols.Attribute)
    1313      return Attr_Function;
  • trunk/ada-2012/src/semantic/gela-int-defining_names.adb

    r278 r358  
    88
    99   function Create
    10      (Children : Natural;
     10     (Down     : Gela.Interpretations.Interpretation_Index_Array;
    1111      Name     : Gela.Elements.Defining_Names.Defining_Name_Access)
    1212      return Defining_Name is
    1313   begin
    14       return (Length => Children, Name => Name, Down => (others => 0));
     14      return (Length => Down'Length, Name => Name, Down => Down);
    1515   end Create;
    1616
  • trunk/ada-2012/src/semantic/gela-int-defining_names.ads

    r278 r358  
    99
    1010   function Create
    11      (Children : Natural;
     11     (Down     : Gela.Interpretations.Interpretation_Index_Array;
    1212      Name     : Gela.Elements.Defining_Names.Defining_Name_Access)
    1313      return Defining_Name;
  • trunk/ada-2012/src/semantic/gela-int-expressions.adb

    r278 r358  
    88
    99   function Create
    10      (Children        : Natural;
     10     (Down            : Gela.Interpretations.Interpretation_Index_Array;
    1111      Expression_Type : Gela.Semantic_Types.Type_Index)
    1212      return Expression is
    1313   begin
    14       return (Length          => Children,
     14      return (Length          => Down'Length,
    1515              Expression_Type => Expression_Type,
    16               Down            => (others => 0));
     16              Down            => Down);
    1717   end Create;
    1818
  • trunk/ada-2012/src/semantic/gela-int-expressions.ads

    r278 r358  
    99
    1010   function Create
    11      (Children        : Natural;
     11     (Down            : Gela.Interpretations.Interpretation_Index_Array;
    1212      Expression_Type : Gela.Semantic_Types.Type_Index)
    1313      return Expression;
  • trunk/ada-2012/src/semantic/gela-plain_interpretations.adb

    r357 r358  
    66package body Gela.Plain_Interpretations is
    77
     8   package Empty_Cursors is
     9      type Cursor is new Gela.Interpretations.Cursor with null record;
     10
     11      overriding function Has_Element (Self : Cursor) return Boolean;
     12
     13      overriding procedure Next (Self : in out Cursor) is null;
     14
     15      overriding procedure Visit
     16        (Self   : Cursor;
     17         Target : access Gela.Interpretations.Visiter'Class) is null;
     18
     19      overriding function Get_Index
     20        (Self : Cursor) return Gela.Interpretations.Interpretation_Index;
     21
     22   end Empty_Cursors;
     23
     24   package body Empty_Cursors is
     25
     26      overriding function Has_Element (Self : Cursor) return Boolean is
     27         pragma Unreferenced (Self);
     28      begin
     29         return False;
     30      end Has_Element;
     31
     32      overriding function Get_Index
     33        (Self : Cursor) return Gela.Interpretations.Interpretation_Index
     34      is
     35         pragma Unreferenced (Self);
     36      begin
     37         return 0;
     38      end Get_Index;
     39
     40   end Empty_Cursors;
     41
    842   -----------------------
    943   -- Add_Attr_Function --
     
    1953        new Gela.Int.Attr_Functions.Attr_Function'
    2054          (Gela.Int.Attr_Functions.Create
    21              (Children => Down'Length,
     55             (Down     => Down,
    2256              Kind     => Kind));
    2357   begin
     
    3872        new Gela.Int.Defining_Names.Defining_Name'
    3973          (Gela.Int.Defining_Names.Create
    40              (Children => Down'Length,
     74             (Down     => Down,
    4175              Name     => Name));
    4276   begin
     
    5791        new Gela.Int.Expressions.Expression'
    5892          (Gela.Int.Expressions.Create
    59              (Children => Down'Length,
     93             (Down            => Down,
    6094              Expression_Type => Tipe));
    6195   begin
     
    151185      return Gela.Interpretations.Cursor'Class is
    152186   begin
    153       return Self.Set_Batches.Element (Set / Batch_Size).Get_Cursor (Set);
     187      if Set = 0 then
     188         return None : Empty_Cursors.Cursor;
     189      else
     190         return Self.Set_Batches.Element (Set / Batch_Size).Get_Cursor (Set);
     191      end if;
    154192   end Get_Cursor;
    155193
  • trunk/ada-2012/src/semantic/gela-resolve.adb

    r357 r358  
    229229      pragma Unreferenced (Env);
    230230      pragma Unreferenced (Args);
     231
     232      IM : constant Gela.Interpretations.Interpretation_Manager_Access :=
     233        Comp.Context.Interpretation_Manager;
     234
     235      Cursor : Gela.Interpretations.Cursor'Class := IM.Get_Cursor (Prefix);
    231236   begin
    232237      Set := 0;
    233238
    234       Comp.Context.Interpretation_Manager.Add_Expression
    235         (Tipe   => Comp.Context.Types.Universal_Integer,
    236          Down   => (1 .. 1 => Gela.Interpretations.Interpretation_Index
    237                     (Prefix)),
    238          Result => Set);
     239      while Cursor.Has_Element loop
     240         Comp.Context.Interpretation_Manager.Add_Expression
     241           (Tipe   => Comp.Context.Types.Universal_Integer,
     242            Down   => (1 .. 1 => Cursor.Get_Index),
     243            Result => Set);
     244
     245         Cursor.Next;
     246      end loop;
    239247   end Function_Call;
    240248
     
    471479   is
    472480      pragma Unreferenced (Env);
     481      IM : constant Gela.Interpretations.Interpretation_Manager_Access :=
     482        Comp.Context.Interpretation_Manager;
     483
     484      Cursor_Left  : Gela.Interpretations.Cursor'Class := IM.Get_Cursor (Left);
     485      Cursor_Right : Gela.Interpretations.Cursor'Class :=
     486        IM.Get_Cursor (Right);
     487
    473488   begin
    474489      Set := 0;
    475 
    476       Comp.Context.Interpretation_Manager.Add_Expression
    477         (Tipe   => 0,
    478          Down   => (Gela.Interpretations.Interpretation_Index (Left),
    479                     Gela.Interpretations.Interpretation_Index (Right)),
    480          Result => Set);
     490      while Cursor_Left.Has_Element loop
     491         while Cursor_Right.Has_Element loop
     492            --  FIX ME: compare types of left and right interpretation
     493            Comp.Context.Interpretation_Manager.Add_Expression
     494              (Tipe   => 0,
     495               Down   => (Cursor_Left.Get_Index,
     496                          Cursor_Right.Get_Index),
     497               Result => Set);
     498
     499            Cursor_Right.Next;
     500         end loop;
     501
     502         Cursor_Left.Next;
     503      end loop;
    481504   end Simple_Expression_Range;
    482505
Note: See TracChangeset for help on using the changeset viewer.