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

            Bug ID: 118219
           Summary: Weird error: type of a component cannot be abstract.
           Product: gcc
           Version: 14.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: ada
          Assignee: unassigned at gcc dot gnu.org
          Reporter: p.p11 at orange dot fr
                CC: dkm at gcc dot gnu.org
  Target Milestone: ---

Created attachment 59987
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=59987&action=edit
Reproducer.

Given:
% cat test_20241227_abstract_ic.ads 
package Test_20241227_abstract_IC is
   type integral_constant1 is limited record
      null;
   end record;
   type integral_constant2 is limited record
      null;
   end record with
     Import => True, Convention => CPP;
end;

The following issue a weird error:

% gcc -c -gnatl test_20241227_abstract.adb
GNAT 14.1.0
Copyright 1992-2024, Free Software Foundation, Inc.
Compiling: test_20241227_abstract.adb
Source file time stamp: 2024-12-27 14:53:36
Compiled at: 2024-12-27 16:06:02
     1. with Test_20241227_abstract_IC;
     2. procedure Test_20241227_abstract is
     3.    type uu_is_fast_hash1 is limited record
     4.       parent : aliased Test_20241227_abstract_IC.integral_constant1;
     5.    end record;
     6.    type uu_is_fast_hash2 is limited record
     7.       parent : aliased Test_20241227_abstract_IC.integral_constant2;
              |
        >>> error: type of a component cannot be abstract
     8.    end record;
     9. begin
    10.    null;
    11. end Test_20241227_abstract;
 11 lines: 1 error

The error is issued only with the type integral_constant2 which has aspects
Import => True, Convention => CPP.
Is it correct to issue an error in this case?

If so, the text of the error is confusing, isn't it?

Full source code archive in attachment.

Reply via email to