aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-threadupdate.c
diff options
context:
space:
mode:
authorSteve Baird <baird@adacore.com>2019-09-17 08:02:04 +0000
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>2019-09-17 08:02:04 +0000
commit0a39f241944cfb7090d73e076913ff068a1cc32f (patch)
treeeb5d50a2f03300f0c13f29d8a6da5403b0d41ff7 /gcc/tree-ssa-threadupdate.c
parent77562afd5b514434c7f6cacaeb1eaaa234d19736 (diff)
downloadgcc-0a39f241944cfb7090d73e076913ff068a1cc32f.zip
gcc-0a39f241944cfb7090d73e076913ff068a1cc32f.tar.gz
gcc-0a39f241944cfb7090d73e076913ff068a1cc32f.tar.bz2
[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
Diffstat (limited to 'gcc/tree-ssa-threadupdate.c')
0 files changed, 0 insertions, 0 deletions