This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
Tested on i686-linux, committed on mainline.
When a predefined unit is not available, we check also if there
is a pragma Restriction forbidding its usage, so that the corresponding
restriction violation message is generated, if needed.
This patch allows to properly compile the following Ada 2005 test:
--
limited with B;
package A is
type Ptr is access B.T;
end A;
with A;
package B is
type T is record
X : A.Ptr;
end record;
end B;
--
When building a configurable run time, it is typically the case that a set
of predefined run-time units are excluded from it. It is usually achieved
by means of both not including the run-time unit, and by setting the
appropriate pragma Restriction (if it exists).
For predefined run-time units which are not present in the run time, it has
been added the machinery for checking whether the unit is also forbidden by
a pragma Restriction, so that the corresponding restriction violation message
is generated, if needed.
--
Add missing check on visibility
Compilation of b-y.ads must yield the error:
b-y.ads:4:25: private child unit "X" is not visible here
--
package B is end;
private package B.X is
type A_Type is new Integer;
end;
private with B.X;
package B.Y is
type B_Type is new B.X.A_Type; -- ERROR
end;
2005-06-14 Javier Miranda <miranda@adacore.com>
Jose Ruiz <ruiz@adacore.com>
Robert Dewar <dewar@adacore.com>
Ed Schonberg <schonberg@adacore.com>
* lib-load.ads, lib-load.adb (Load_Unit): Addition of a new parameter
that indicates if we are parsing a compilation unit found in a
limited-with clause.
It is use to avoid the circularity check.
* par.ads, par.adb (Par): Addition of a new parameter to indicate if
we are parsing a compilation unit found in a limited-with clause. This
is use to avoid the circularity check.
* par-load.adb (Load): Indicate Lib.Load_Unit if we are loading the
unit as a consequence of parsing a limited-with clause. This is used
to avoid the circularity check.
* sem_ch10.adb: Suppress Ada 2005 unit warning if -gnatwY used
(Analyze_Context): Limited-with clauses are now allowed
in more compilation units.
(Analyze_Subunit_Context, Check_Parent): Protect the frontend
againts previously reported critical errors in context clauses
(Install_Limited_Withed_Unit): Code cleanup plus static detection
of two further errors: renamed subprograms and renamed packages
are not allowed in limited with clauses.
(Install_Siblings): Do not install private_with_clauses on the package
declaration for a non-private child unit.
(Re_Install_Parents): When a parent of the subunit is reinstalled,
reset visibility of child units properly.
(Install_Withed_Unit): When a child unit appears in a with_clause of its
parent, it is immediately visible.
Attachment:
difs.34
Description: Text document
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |