[Bug ada/42411] New: Illegal program accepted, RM 4.1(8), 8.6(27)/2
ludovic at ludovic-brenta dot org
gcc-bugzilla@gcc.gnu.org
Thu Dec 17 19:47:00 GMT 2009
package pak1 is
type T1 is new integer;
type T1_access is access all T1;
x1: aliased T1;
x2: T1 := x1'access.all; --ERROR: 4.1(8) (missed)
x3: T1_access := T1_access(x1'access); --ERROR: 4.6(6) (detected)
end pak1;
Gnat misses the error involving x1'access.all.
RM 3.10.2(2)/2 says "the expected type (for 'access) shall be
a single access type". But ".all" doesn't provide a single
access type. Instead, by RM 4.1(8), the name in a dereference
"is expected to be of any access type".
The rule for type_conversions (x3) is similar. RM 4.6(6) says
"The operand of a type_conversion is expected to be of any type."
Gnat does detect this error.
$ gnatmake pak1
gcc-4.3 -c pak1.ads
pak1.ads:6:21: argument of conversion cannot be access
pak1.ads:6:21: use qualified expression instead
gnatmake: "pak1.ads" compilation error
--
Summary: Illegal program accepted, RM 4.1(8), 8.6(27)/2
Product: gcc
Version: 4.3.4
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: ada
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: ludovic at ludovic-brenta dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42411
More information about the Gcc-bugs
mailing list