+2015-03-24 Gary Dismukes <dismukes@adacore.com>
+
+ * sem_ch3.adb: Minor typo fix (missing paren).
+
+2015-03-24 Robert Dewar <dewar@adacore.com>
+
+ * sinfo.ads: Update comment.
+
+2015-03-24 Robert Dewar <dewar@adacore.com>
+
+ * exp_attr.adb: Add entry for typ'Deref.
+ * sem_attr.adb (Deref): New GNAT attribute.
+ * sem_attr.ads: Add entry for new GNAT attribute Deref.
+ * snames.ads-tmpl: Add entries for new attribute Deref.
+
2015-03-24 Ed Schonberg <schonberg@adacore.com>
* sem_ch13.adb (Rep_Item_Too_Early): allow pragma Convention
when Attribute_Bit_Order |
Attribute_Code_Address |
Attribute_Definite |
+ Attribute_Deref |
Attribute_Null_Parameter |
Attribute_Passed_By_Reference |
Attribute_Pool_Address |
Check_Floating_Point_Type_0;
Set_Etype (N, Standard_Boolean);
+ -----------
+ -- Deref --
+ -----------
+
+ when Attribute_Deref =>
+ Check_Type;
+ Check_E1;
+ Resolve (E1, RTE (RE_Address));
+ Set_Etype (N, P_Type);
+
---------------------
-- Descriptor_Size --
---------------------
Attribute_Count |
Attribute_Default_Bit_Order |
Attribute_Default_Scalar_Storage_Order |
+ Attribute_Deref |
Attribute_Elaborated |
Attribute_Elab_Body |
Attribute_Elab_Spec |
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2014, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2015, 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- --
-- Implementation Dependent Attributes --
-----------------------------------------
- -- This section describes the implementation dependent attributes
- -- provided in GNAT, as well as constructing an array of flags
- -- indicating which attributes these are.
+ -- This section describes the implementation dependent attributes provided
+ -- in GNAT, as well as constructing an array of flags indicating which
+ -- attributes these are.
Attribute_Impl_Def : Attribute_Class_Array := Attribute_Class_Array'(
-- Default_Scalar_Storage_Order, or equal to Default_Bit_Order if
-- unspecified) as a System.Bit_Order value. This is a static attribute.
+ -----------
+ -- Deref --
+ -----------
+
+ Attribute_Deref => True,
+ -- typ'Deref (expr) is valid only if expr is of type System'Address.
+ -- The result is an object of type typ that is obtained by treating the
+ -- address as an access-to-typ value that points to the result. It is
+ -- basically equivalent to (atyp!expr).all where atyp is an access type
+ -- for the type.
+
---------------
-- Elab_Body --
---------------
and then No (Corresponding_Generic_Association (Parent (Obj_Id)))
-- Don't give this for internally generated entities (such as the
- -- FIRST and LAST temporaries generated for bounds.
+ -- FIRST and LAST temporaries generated for bounds).
and then Comes_From_Source (Obj_Id)
then
-- setting tag values, etc. N_Object_Declaration nodes also have this
-- flag defined. Here it is used to indicate that an initialization
-- expression is valid, even where it would normally not be allowed
- -- (e.g. where the type involved is limited).
+ -- (e.g. where the type involved is limited). It is also used to stop
+ -- a Force_Evaluation call for an unchecked conversion, but this usage
+ -- is unclear and not documented ???
-- Associated_Node (Node4-Sem)
-- Present in nodes that can denote an entity: identifiers, character
Name_Definite : constant Name_Id := N + $;
Name_Delta : constant Name_Id := N + $;
Name_Denorm : constant Name_Id := N + $;
+ Name_Deref : constant Name_Id := N + $; -- GNAT
Name_Descriptor_Size : constant Name_Id := N + $;
Name_Digits : constant Name_Id := N + $;
Name_Elaborated : constant Name_Id := N + $; -- GNAT
Attribute_Definite,
Attribute_Delta,
Attribute_Denorm,
+ Attribute_Deref,
Attribute_Descriptor_Size,
Attribute_Digits,
Attribute_Elaborated,