concrete.ads 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. -- Copyright 2022 Free Software Foundation, Inc.
  2. --
  3. -- This program is free software; you can redistribute it and/or modify
  4. -- it under the terms of the GNU General Public License as published by
  5. -- the Free Software Foundation; either version 3 of the License, or
  6. -- (at your option) any later version.
  7. --
  8. -- This program is distributed in the hope that it will be useful,
  9. -- but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. -- GNU General Public License for more details.
  12. --
  13. -- You should have received a copy of the GNU General Public License
  14. -- along with this program. If not, see <http://www.gnu.org/licenses/>.
  15. package Concrete is
  16. type Iface is interface;
  17. type Base (N : Integer) is tagged record
  18. A : String (1 .. N);
  19. end record;
  20. -- An empty extension of Base. The compiler sources claimed there
  21. -- was a special case for this, and while that doesn't seem to be
  22. -- true in practice, it's worth checking.
  23. type Intermediate is new Base with record
  24. null;
  25. end record;
  26. type Object is new Intermediate and Iface with record
  27. Value: Integer;
  28. end record;
  29. procedure Accept_Iface (Obj: Iface'Class);
  30. end Concrete;