• Error: container cannot be indexed with "Cursor"

    From Blady@p.p11@orange.fr to comp.lang.ada on Fri Aug 8 22:22:07 2025
    From Newsgroup: comp.lang.ada

    Hello,

    Container type UX is declared as:
    type UX is tagged private with
    Constant_Indexing => Constant_Reference, Variable_Indexing =>
    Reference, Default_Iterator => Iterate,
    Iterator_Element => Character,
    Aggregate => (Empty => Empty, Add_Unnamed => Append, New_Indexed
    New_Vector, Assign_Indexed => Replace_Element);


    I declare:

    S3 : UX;
    ...
    80. for I in S3.Iterate loop
    82. if F then
    83. S3(I) := 'e';
    84. end if;
    85. C := S3 (I);
    87. end loop;

    GNAT 15 issues the errors:
    test.adb:83:10: error: container cannot be indexed with "Cursor" test.adb:85:14: error: container cannot be indexed with "Cursor"

    Prior GNAT versions didn't issued any errors.

    Is there a change in Ada standard? or GNAT?
    Why is cursor indexing not possible?

    Thanks for your answers, Pascal.


    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Blady@p.p11@orange.fr to comp.lang.ada on Sat Aug 9 16:25:26 2025
    From Newsgroup: comp.lang.ada

    Le 08/08/2025 à 22:22, Blady a écrit :
    Hello,

    Container type UX is declared as:
       type UX is tagged private with
         Constant_Indexing => Constant_Reference, Variable_Indexing => Reference, Default_Iterator => Iterate,
         Iterator_Element  => Character,
         Aggregate => (Empty => Empty, Add_Unnamed => Append, New_Indexed
    New_Vector, Assign_Indexed => Replace_Element);


    I declare:

    S3 : UX;
    ...
    80.    for I in S3.Iterate loop
    82.       if F then
    83.          S3(I) := 'e';
    84.       end if;
    85.       C := S3 (I);
    87.    end loop;

    GNAT 15 issues the errors:
    test.adb:83:10: error: container cannot be indexed with "Cursor" test.adb:85:14: error: container cannot be indexed with "Cursor"

    Prior GNAT versions didn't issued any errors.

    Is there a change in Ada standard? or GNAT?
    Why is cursor indexing not possible?

    Same with of form:
    for CC of S2 loop
    error: container cannot be indexed with "Cursor"

    Compiler bug?

    --- Synchronet 3.21a-Linux NewsLink 1.2