Steve Baird 0a39f24194 [Ada] Don't accept illegal (e.g., Integer'(null)) generic actuals
Sem_Util.Wrong_Type usually emits an error message, but in some cases it
does not. The code which prevents emitting an error message was going
too far in some cases, causing illegal constructs to be accepted. For
example, a qualified expression such as Integer'(null) might be passed
in as an actual parameter in an instantiation of a generic and generate
no error message.

Running this command:

  gcc -c inst.ads

On the following sources:

package Inst is
   type Ptr is new Integer;

   generic
      type TElement is private;
      NonDefini : TElement;
   package ArbMgr is
   end ArbMgr;

   package Pack is new ArbMgr (Ptr, Ptr'(null));

   procedure Dummy;
end Inst;

Should produce the following output:

  inst.ads:10:42: expected type "Ptr" defined at line 2
  inst.ads:10:42: found an access type
  compilation abandoned due to previous error

2019-09-17  Steve Baird  <baird@adacore.com>

gcc/ada/

	* sem_util.adb (Wrong_Type): In deciding to suppress a message,
	it is not enough for In_Instance to be True; in addition,
	In_Generic_Actual (Expr) must be False.
	* sem_type.adb (In_Generic_Actual): Fix bug where traversal of
	parents skips every other node.

From-SVN: r275786
2019-09-17 08:02:04 +00:00
2019-09-09 12:13:23 +02:00
2019-01-01 13:31:55 +01:00
2019-05-21 14:33:24 +00:00
2019-01-01 13:31:55 +01:00
2019-09-13 17:07:20 +00:00
2019-09-13 20:14:02 +02:00
2019-01-01 13:31:55 +01:00
2019-01-09 16:37:45 -05:00
2019-01-01 13:31:55 +01:00
2019-02-20 08:07:19 -08:00
2019-09-13 10:41:37 +00:00
2019-09-09 11:14:32 +02:00
2019-09-09 12:13:23 +02:00
2019-09-09 12:13:23 +02:00
2019-06-15 21:32:03 +00:00

This directory contains the GNU Compiler Collection (GCC).

The GNU Compiler Collection is free software.  See the files whose
names start with COPYING for copying permission.  The manuals, and
some of the runtime libraries, are under different terms; see the
individual source files for details.

The directory INSTALL contains copies of the installation information
as HTML and plain text.  The source of this information is
gcc/doc/install.texi.  The installation information includes details
of what is included in the GCC sources and what files GCC installs.

See the file gcc/doc/gcc.texi (together with other files that it
includes) for usage and porting information.  An online readable
version of the manual is in the files gcc/doc/gcc.info*.

See http://gcc.gnu.org/bugs/ for how to report bugs usefully.

Copyright years on GCC source files may be listed using range
notation, e.g., 1987-2012, indicating that every year in the range,
inclusive, is a copyrightable year that could otherwise be listed
individually.
Description
No description provided
Readme 2.1 GiB
Languages
C++ 31.9%
C 31.3%
Ada 12%
D 6.5%
Go 6.4%
Other 11.5%