This patch modifies the mechanism which manages [private] with clauses to uninstall a limited with clause if a non-limited with clause is given for the same package. The management of with clauses already prevents the installation of a limited with clause if the related package is already withed though a non-limited with clause. The timing of parent unit with clause processing is such that the non- limited clauses of the child unit are first installed, followed by the clauses of the parent. This order prevents a limited with clause from "overriding" a non-limited with clause. Private with clauses however break this model because they are processed when the private part of a package is entered. Since private with clauses are non- limited with clauses, they must "override" the effects of any limited clauses which import the same packages. This effect is now correctly achieved by uninstalling the limited with clauses when private with clauses are activated. ------------ -- Source -- ------------ -- server.ads package Server is type Root is tagged private; private type Root is tagged null record; end Server; -- parent.ads limited with Server; package Parent is end Parent; -- parent-client.ads private with Server; package Parent.Client is type Deriv is tagged private; private type Deriv is new Server.Root with null record; end Parent.Client; ----------------- -- Compilation -- ----------------- $ gcc -c parent-client.ads 2018-05-24 Hristian Kirtchev <kirtchev@adacore.com> gcc/ada/ * sem_ch10.adb (Expand_Limited_With_Clause): Update the call to Install_Limited_Withed_Unit. (Expand_With_Clause): Update the call to Install_Withed_Unit. (Implicit_With_On_Parent): Update the call to Install_Withed_Unit. (Install_Context_Clauses): Update the call to Install_Withed_Unit. (Install_Limited_Context_Clauses): Update the calls to Install_Limited_Withed_Unit. (Install_Limited_Withed_Unit): Renamed to better illustrate its purpose. (Install_Private_With_Clauses): Update the calls to Install_Withed_Unit and Install_Limited_Withed_Unit. (Install_With_Clause): Uninstall a limited with clause if a [private] with clause is given for the same package. (Install_Withed_Unit): Renamed to better illustrate its purpose. (Remove_Limited_With_Unit): New routine. From-SVN: r260660
Name |
Last commit
|
Last update |
---|---|---|
INSTALL | Loading commit data... | |
config | Loading commit data... | |
contrib | Loading commit data... | |
fixincludes | Loading commit data... | |
gcc | Loading commit data... | |
gnattools | Loading commit data... | |
gotools | Loading commit data... | |
include | Loading commit data... | |
intl | Loading commit data... | |
libada | Loading commit data... | |
libatomic | Loading commit data... | |
libbacktrace | Loading commit data... | |
libcc1 | Loading commit data... | |
libcpp | Loading commit data... | |
libdecnumber | Loading commit data... | |
libffi | Loading commit data... | |
libgcc | Loading commit data... | |
libgfortran | Loading commit data... | |
libgo | Loading commit data... | |
libgomp | Loading commit data... | |
libhsail-rt | Loading commit data... | |
libiberty | Loading commit data... | |
libitm | Loading commit data... | |
libmpx | Loading commit data... | |
libobjc | Loading commit data... | |
liboffloadmic | Loading commit data... | |
libquadmath | Loading commit data... | |
libsanitizer | Loading commit data... | |
libssp | Loading commit data... | |
libstdc++-v3 | Loading commit data... | |
libvtv | Loading commit data... | |
lto-plugin | Loading commit data... | |
maintainer-scripts | Loading commit data... | |
zlib | Loading commit data... | |
.dir-locals.el | Loading commit data... | |
.gitattributes | Loading commit data... | |
.gitignore | Loading commit data... | |
ABOUT-NLS | Loading commit data... | |
COPYING | Loading commit data... | |
COPYING.LIB | Loading commit data... | |
COPYING.RUNTIME | Loading commit data... | |
COPYING3 | Loading commit data... | |
COPYING3.LIB | Loading commit data... | |
ChangeLog | Loading commit data... | |
ChangeLog.jit | Loading commit data... | |
ChangeLog.tree-ssa | Loading commit data... | |
MAINTAINERS | Loading commit data... | |
Makefile.def | Loading commit data... | |
Makefile.in | Loading commit data... | |
Makefile.tpl | Loading commit data... | |
README | Loading commit data... | |
compile | Loading commit data... | |
config-ml.in | Loading commit data... | |
config.guess | Loading commit data... | |
config.rpath | Loading commit data... | |
config.sub | Loading commit data... | |
configure | Loading commit data... | |
configure.ac | Loading commit data... | |
depcomp | Loading commit data... | |
install-sh | Loading commit data... | |
libtool-ldflags | Loading commit data... | |
libtool.m4 | Loading commit data... | |
ltgcc.m4 | Loading commit data... | |
ltmain.sh | Loading commit data... | |
ltoptions.m4 | Loading commit data... | |
ltsugar.m4 | Loading commit data... | |
ltversion.m4 | Loading commit data... | |
lt~obsolete.m4 | Loading commit data... | |
missing | Loading commit data... | |
mkdep | Loading commit data... | |
mkinstalldirs | Loading commit data... | |
move-if-change | Loading commit data... | |
symlink-tree | Loading commit data... | |
ylwrap | Loading commit data... |