exp_ch2.adb
25.2 KB
-
exp_ch2.adb: Remove "with" and "use" clauses for Namet and Snames. · 822033eb
2007-04-20 Hristian Kirtchev <kirtchev@adacore.com> Robert Dewar <dewar@adacore.com> Ed Schonberg <schonberg@adacore.com> Gary Dismukes <dismukes@adacore.com> * exp_ch2.adb: Remove "with" and "use" clauses for Namet and Snames. Add "with" and "use" clauses for Sem_Attr. (Expand_Current_Value): Do not replace occurences of attribute references where the prefix must be a simple name. * sem_attr.ads, sem_attr.adb: Remove "with" and "use" clauses for Namet. Add new arrays Attribute_Name_Modifies_Prefix and Attribute_Requires_Simple_Name_Prefix. (Name_Modifies_Prefix): Body of new function. (Requires_Simple_Name_Prefix): Body of new function. (Resolve_Attribute, case Access): Improve error message for case of mismatched conventions. (Analyze_Attribute, case 'Tag): The prefix the attribute cannot be of an incomplete type. (Analyze_Attribute, case 'Access): If the type of the prefix is a constrained subtype for a nominal unconstrained type, use its base type to check for conformance with the context. (Resolve_Attribute): Remove test of the access type being associated with a return statement from condition for performing accessibility checks on access attributes, since this case is now captured by Is_Local_Anonymous_Access. (Analyze_Access_Attribute): Set Address_Taken on entity (Analyze_Attribute, case Address): Set Address_Taken on entity (OK_Self_Reference): Traverse tree to locate enclosing aggregate when validating an access attribute whose prefix is a current instance. (Resolve_Attribute): In case of attributes 'Code_Address and 'Address applied to dispatching operations, if freezing is required then we set the attribute Has_Delayed_Freeze in the prefix's entity. (Check_Local_Access): Set flag Suppress_Value_Tracking_On_Call in current scope if access of local subprogram taken (Analyze_Access_Attribute): Check legality of self-reference even if the expression comes from source, as when a single component association in an aggregate has a box association. (Resolve_Attribute, case 'Access): Do not apply accessibility checks to the prefix if it is a protected operation and the attribute is Unrestricted_Access. (Resolve_Attribute, case 'Access): Set the Etype of the attribute reference to the base type of the context, to force a constraint check when the context is an access subtype with an explicit constraint. (Analyze_Attribute, case 'Class): If the prefix is an interface and the node is rewritten as an interface conversion. leave unanalyzed after resolution, to ensure that type checking against the context will take place. From-SVN: r125395
Hristian Kirtchev committed