summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2009-04-22 10:36:37 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2009-04-22 10:36:37 +0000
commit4437ef758b7c982d837ecf033092e0f6b23f58cc (patch)
tree184b37529ffc00a287c44c3089b5f31ff094b55b
parent5e0f2e2f57e4c0dd7fbef49f53b54d41ea27aa94 (diff)
downloadgcc-4437ef758b7c982d837ecf033092e0f6b23f58cc.tar.gz
2009-04-22 Robert Dewar <dewar@adacore.com>
* mlib.adb: Minor reformatting * sem_aggr.adb: Minor reformatting. Defend against junk aggregate from syntax error. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@146562 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ada/ChangeLog7
-rw-r--r--gcc/ada/mlib.adb1
-rw-r--r--gcc/ada/sem_aggr.adb23
3 files changed, 27 insertions, 4 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index a70a712677a..9c8c15d1fa5 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,10 @@
+2009-04-22 Robert Dewar <dewar@adacore.com>
+
+ * mlib.adb: Minor reformatting
+
+ * sem_aggr.adb: Minor reformatting. Defend against junk aggregate from
+ syntax error.
+
2009-04-22 Nicolas Setton <setton@adacore.com>
* link.c: Add flag __gnat_separate_run_path_options.
diff --git a/gcc/ada/mlib.adb b/gcc/ada/mlib.adb
index 22d24ab243d..6c1a4918340 100644
--- a/gcc/ada/mlib.adb
+++ b/gcc/ada/mlib.adb
@@ -450,7 +450,6 @@ package body MLib is
Separate_Paths : Boolean;
for Separate_Paths'Size use Character'Size;
pragma Import (C, Separate_Paths, "__gnat_separate_run_path_options");
-
begin
return Separate_Paths;
end Separate_Run_Path_Options;
diff --git a/gcc/ada/sem_aggr.adb b/gcc/ada/sem_aggr.adb
index 2e7ba8ee63b..22557b74ce8 100644
--- a/gcc/ada/sem_aggr.adb
+++ b/gcc/ada/sem_aggr.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2008, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2009, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -896,6 +896,15 @@ package body Sem_Aggr is
-- which is the subtype of the context in which the aggregate was found.
begin
+ -- Ignore junk empty aggregate resulting from parser error
+
+ if No (Expressions (N))
+ and then No (Component_Associations (N))
+ and then not Null_Record_Present (N)
+ then
+ return;
+ end if;
+
-- Check for aggregates not allowed in configurable run-time mode.
-- We allow all cases of aggregates that do not come from source,
-- since these are all assumed to be small (e.g. bounds of a string
@@ -1504,6 +1513,15 @@ package body Sem_Aggr is
-- Start of processing for Resolve_Array_Aggregate
begin
+ -- Ignore junk empty aggregate resulting from parser error
+
+ if No (Expressions (N))
+ and then No (Component_Associations (N))
+ and then not Null_Record_Present (N)
+ then
+ return False;
+ end if;
+
-- STEP 1: make sure the aggregate is correctly formatted
if Present (Component_Associations (N)) then
@@ -2171,13 +2189,12 @@ package body Sem_Aggr is
then
A_Type := Etype (Imm_Type);
return True;
-
else
Imm_Type := Etype (Base_Type (Imm_Type));
end if;
end loop;
- -- If previous loop did not find a proper ancestor, report error.
+ -- If previous loop did not find a proper ancestor, report error
Error_Msg_NE ("expect ancestor type of &", A, Typ);
return False;