• GNAT Error?

    From Jeffrey R.Carter@spam.jrcarter.not@spam.acm.org.not to comp.lang.ada on Fri Feb 16 23:51:33 2024
    From Newsgroup: comp.lang.ada

    I have this code:

    package Alloc_Err is
    type RT is record
    F1 : Integer;
    F2 : Integer;
    end record;

    type Grid is array (Positive range <>, Positive range <>) of RT with
    Dynamic_Predicate => Grid'First (1) = 1 and Grid'First (2) = 1;

    procedure What;
    end Alloc_Err;

    package Alloc_Err is
    type RT is record
    F1 : Integer;
    F2 : Integer;
    end record;

    type Grid is array (Positive range <>, Positive range <>) of RT with
    Dynamic_Predicate => Grid'First (1) = 1 and Grid'First (2) = 1;

    procedure What;
    end Alloc_Err;

    and GNAT 12.3.0 and 13.2.0 say

    alloc_err.adb:5:26: error: invalid use of subtype mark in expression or call

    This doesn't happen if the Dynamic_Predicate is removed. This looks like an error to me, but I thought I'd better see if there's something I've missed.
    --
    Jeff Carter
    "I like it when the support group complains that they have
    insufficient data on mean time to repair bugs in Ada software."
    Robert I. Eachus
    91
    --- Synchronet 3.20a-Linux NewsLink 1.114
  • From Niklas Holsti@niklas.holsti@tidorum.invalid to comp.lang.ada on Sat Feb 17 01:26:34 2024
    From Newsgroup: comp.lang.ada

    On 2024-02-17 0:51, Jeffrey R.Carter wrote:
    I have this code:

    package Alloc_Err is
       type RT is record
          F1 : Integer;
          F2 : Integer;
       end record;

       type Grid is array (Positive range <>, Positive range <>) of RT with
          Dynamic_Predicate => Grid'First (1) = 1 and Grid'First (2) = 1;

       procedure What;
    end Alloc_Err;

    package Alloc_Err is
       type RT is record
          F1 : Integer;
          F2 : Integer;
       end record;

       type Grid is array (Positive range <>, Positive range <>) of RT with
          Dynamic_Predicate => Grid'First (1) = 1 and Grid'First (2) = 1;

       procedure What;
    end Alloc_Err;

    and GNAT 12.3.0 and 13.2.0 say

    alloc_err.adb:5:26: error: invalid use of subtype mark in expression or
    call

    This doesn't happen if the Dynamic_Predicate is removed. This looks like
    an error to me, but I thought I'd better see if there's something I've missed.


    You showed two copies of the declaration (spec) of package Alloc_Err,
    but you did not show the body of the package. Based on the error message pointing to alloc_err.adb (and not .ads), GNAT thinks the error is in
    the body. Please show the body of the package.

    --- Synchronet 3.20a-Linux NewsLink 1.114
  • From Jeffrey R.Carter@spam.jrcarter.not@spam.acm.org.not to comp.lang.ada on Sat Feb 17 00:45:08 2024
    From Newsgroup: comp.lang.ada

    On 2024-02-17 00:26, Niklas Holsti wrote:

    You showed two copies of the declaration (spec) of package Alloc_Err, but you
    did not show the body of the package. Based on the error message pointing to alloc_err.adb (and not .ads), GNAT thinks the error is in the body. Please show
    the body of the package.


    Oops. Well, I've managed to simplify the reproducer to

    procedure Alloc2 is
    type Grid is array (Positive range <>, Positive range <>) of Integer with
    Dynamic_Predicate => Grid'First (1) = 1 and Grid'First (2) = 1;

    type Grid_Ptr is access Grid;

    Data : Grid_Ptr := new Grid (1 .. 10, 1 .. 20);
    begin -- Alloc2
    null;
    end Alloc2;

    which results in

    alloc2.adb:7:23: error: invalid use of subtype mark in expression or call

    Line 7 is the declaration of Data.
    --
    Jeff Carter
    "I like it when the support group complains that they have
    insufficient data on mean time to repair bugs in Ada software."
    Robert I. Eachus
    91

    --- Synchronet 3.20a-Linux NewsLink 1.114
  • From Randy Brukardt@randy@rrsoftware.com to comp.lang.ada on Sat Feb 17 00:04:21 2024
    From Newsgroup: comp.lang.ada

    I don't see anything wrong with that off-hand. It's probably a compiler bug
    of some sort. - Randy.


    "Jeffrey R.Carter" <spam.jrcarter.not@spam.acm.org.not> wrote in message news:uqos24$3rue0$2@dont-email.me...
    On 2024-02-17 00:26, Niklas Holsti wrote:

    You showed two copies of the declaration (spec) of package Alloc_Err, but >> you did not show the body of the package. Based on the error message
    pointing to alloc_err.adb (and not .ads), GNAT thinks the error is in the >> body. Please show the body of the package.


    Oops. Well, I've managed to simplify the reproducer to

    procedure Alloc2 is
    type Grid is array (Positive range <>, Positive range <>) of Integer
    with
    Dynamic_Predicate => Grid'First (1) = 1 and Grid'First (2) = 1;

    type Grid_Ptr is access Grid;

    Data : Grid_Ptr := new Grid (1 .. 10, 1 .. 20);
    begin -- Alloc2
    null;
    end Alloc2;

    which results in

    alloc2.adb:7:23: error: invalid use of subtype mark in expression or call

    Line 7 is the declaration of Data.

    --
    Jeff Carter
    "I like it when the support group complains that they have
    insufficient data on mean time to repair bugs in Ada software."
    Robert I. Eachus
    91



    --- Synchronet 3.20a-Linux NewsLink 1.114
  • From Jeffrey R.Carter@spam.jrcarter.not@spam.acm.org.not to comp.lang.ada on Sat Feb 17 07:11:26 2024
    From Newsgroup: comp.lang.ada

    On 2024-02-17 07:04, Randy Brukardt wrote:
    I don't see anything wrong with that off-hand. It's probably a compiler bug of some sort. - Randy.

    That's what I thought. I know some people have GNAT 14. I'll wait a bit to see if any of them report on if this is still the case before reporting it.
    --
    Jeff Carter
    "Drown in a vat of whiskey. Death, where is thy sting?"
    Never Give a Sucker an Even Break
    106

    --- Synchronet 3.20a-Linux NewsLink 1.114
  • From Simon Wright@simon@pushface.org to comp.lang.ada on Sun Feb 18 09:48:57 2024
    From Newsgroup: comp.lang.ada

    "Jeffrey R.Carter" <spam.jrcarter.not@spam.acm.org.not> writes:

    On 2024-02-17 07:04, Randy Brukardt wrote:
    I don't see anything wrong with that off-hand. It's probably a
    compiler bug of some sort. - Randy.

    That's what I thought. I know some people have GNAT 14. I'll wait a
    bit to see if any of them report on if this is still the case before reporting it.

    None of GCC 11.2.0, 12.2.0, 13.2.0, 14.0.1 report errors with
    alloc2.adb.

    These are all apple-darwin, but the error reported is going to be a
    front-end error.

    --- Synchronet 3.20a-Linux NewsLink 1.114
  • From Simon Wright@simon@pushface.org to comp.lang.ada on Sun Feb 18 09:59:47 2024
    From Newsgroup: comp.lang.ada

    Simon Wright <simon@pushface.org> writes:

    "Jeffrey R.Carter" <spam.jrcarter.not@spam.acm.org.not> writes:

    On 2024-02-17 07:04, Randy Brukardt wrote:
    I don't see anything wrong with that off-hand. It's probably a
    compiler bug of some sort. - Randy.

    That's what I thought. I know some people have GNAT 14. I'll wait a
    bit to see if any of them report on if this is still the case before
    reporting it.

    None of GCC 11.2.0, 12.2.0, 13.2.0, 14.0.1 report errors with
    alloc2.adb.

    These are all apple-darwin, but the error reported is going to be a
    front-end error.

    Oh, you didn't say that -gnata is needed to provoke the error, though
    it's not really a surprise.

    Now, only GCC 11.2.0 doesn't have the error; so it's a regression in GCC
    12.
    --- Synchronet 3.20a-Linux NewsLink 1.114
  • From Jeffrey R.Carter@spam.jrcarter.not@spam.acm.org.not to comp.lang.ada on Sun Feb 18 12:48:53 2024
    From Newsgroup: comp.lang.ada

    On 2024-02-18 10:59, Simon Wright wrote:

    Oh, you didn't say that -gnata is needed to provoke the error, though
    it's not really a surprise.

    Now, only GCC 11.2.0 doesn't have the error; so it's a regression in GCC
    12.

    Sorry, I should have given my compilation options. You're right that I used -gnata. But I did say it was related to the Dynamic_Predicate.

    As you have GNAT 14 and I don't, perhaps it would be best for you to report this.
    --
    Jeff Carter
    "We'll make Rock Ridge think it's a chicken
    that got caught in a tractor's nuts!"
    Blazing Saddles
    87

    --- Synchronet 3.20a-Linux NewsLink 1.114
  • From Simon Wright@simon@pushface.org to comp.lang.ada on Sun Feb 18 14:33:51 2024
    From Newsgroup: comp.lang.ada

    "Jeffrey R.Carter" <spam.jrcarter.not@spam.acm.org.not> writes:

    On 2024-02-18 10:59, Simon Wright wrote:
    Oh, you didn't say that -gnata is needed to provoke the error,
    though
    it's not really a surprise.
    Now, only GCC 11.2.0 doesn't have the error; so it's a regression in
    GCC
    12.

    Sorry, I should have given my compilation options. You're right that I
    used -gnata. But I did say it was related to the Dynamic_Predicate.

    As you have GNAT 14 and I don't, perhaps it would be best for you to
    report this.

    See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113979
    --- Synchronet 3.20a-Linux NewsLink 1.114
  • From Simon Wright@simon@pushface.org to comp.lang.ada on Thu Mar 7 14:54:50 2024
    From Newsgroup: comp.lang.ada

    Simon Wright <simon@pushface.org> writes:

    "Jeffrey R.Carter" <spam.jrcarter.not@spam.acm.org.not> writes:

    On 2024-02-18 10:59, Simon Wright wrote:
    Oh, you didn't say that -gnata is needed to provoke the error,
    though
    it's not really a surprise.
    Now, only GCC 11.2.0 doesn't have the error; so it's a regression in
    GCC
    12.

    Sorry, I should have given my compilation options. You're right that I
    used -gnata. But I did say it was related to the Dynamic_Predicate.

    As you have GNAT 14 and I don't, perhaps it would be best for you to
    report this.

    See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113979

    And now fixed on all "active" branches! (that's 11, 12, 13 & master,
    judging by the comments)

    Of course, it takes a while for this to percolate through to a release.
    --- Synchronet 3.20a-Linux NewsLink 1.114
  • From Jeffrey R.Carter@spam.jrcarter.not@spam.acm.org.not to comp.lang.ada on Thu Mar 7 16:06:18 2024
    From Newsgroup: comp.lang.ada

    On 2024-03-07 15:54, Simon Wright wrote:
    Simon Wright <simon@pushface.org> writes:

    See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113979

    And now fixed on all "active" branches! (that's 11, 12, 13 & master,
    judging by the comments)

    Of course, it takes a while for this to percolate through to a release.

    Cool. Thanks for reporting this.
    --
    Jeff Carter
    "C's solution to this [variable-sized array parameters] has real
    problems, and people who are complaining about safety definitely
    have a point."
    Dennis Ritchie
    25

    --- Synchronet 3.20a-Linux NewsLink 1.114