Steve Baird 158b52c961 [Ada] Implement AI12-0249, AI12-0295 (user-defined numeric & string literals)
2020-06-16  Steve Baird  <baird@adacore.com>

gcc/ada/

	* snames.ads-tmpl: Define names of the three new aspects.
	* aspects.ads: Define the three new aspects.
	* sem_util.ads, sem_util.adb, sem_dim.adb: Move the function
	String_From_Numeric_Literal from being declared in the body of
	package Sem_Dim to being declared in the visible part of package
	Sem_Util.
	* sem_ch13.ads, sem_ch13.adb: Declare new visible procedure
	Validate_Literal_Aspect. This is where most of the legality
	checking occurs for an aspect specification for one of the three
	new aspects, as well as resolution of the subprogram named in
	the aspect specification. Follow example of other aspects (e.g.,
	Validate_Literal_Aspect is called in much the same way as
	Validate_Iterable_Aspect in Analyze_Aspects_At_Freeze_Point; a
	small amount of legality checking is performed in
	Analyze_One_Aspect in much the same way as for Default_Value or
	Default_Component_Value aspects). Most of the work is done in
	Validate_Literal_Aspect.
	* contracts.adb (Add_Contract_Item): Call
	Validate_Literal_Aspect in much the same way that
	Validate_Iterable_Aspect was already being called.
	* sem_res.adb (Resolve): Rewrite a literal as a call if it is a
	user-defined literal.  This is where the dynamic semantics of
	the 3 new aspects are implemented.
	* sem_ch6.adb (Fully_Conformant_Expressions): Two numeric
	literals that have different text but the same value (e.g.,
	12345 and 12_345) do not conform if they are user-defined
	literals. Introduce a new function
	User_Defined_Numeric_Literal_Mismatch to avoid duplication in
	making this check.
	* sem_type.adb (Has_Compatible_Type): A numeric literal can be
	compatible with a non-numeric type (and a string literal can be
	compatible with a non-string type) if it can be interpreted as a
	user-defined literal.
2020-06-16 09:07:15 -04:00
2020-06-16 00:16:28 +00:00
2020-06-14 00:16:18 +00:00
2020-06-12 16:03:02 +02:00
2020-06-13 00:16:25 +00:00

This directory contains the GNU Compiler Collection (GCC).

The GNU Compiler Collection is free software.  See the files whose
names start with COPYING for copying permission.  The manuals, and
some of the runtime libraries, are under different terms; see the
individual source files for details.

The directory INSTALL contains copies of the installation information
as HTML and plain text.  The source of this information is
gcc/doc/install.texi.  The installation information includes details
of what is included in the GCC sources and what files GCC installs.

See the file gcc/doc/gcc.texi (together with other files that it
includes) for usage and porting information.  An online readable
version of the manual is in the files gcc/doc/gcc.info*.

See http://gcc.gnu.org/bugs/ for how to report bugs usefully.

Copyright years on GCC source files may be listed using range
notation, e.g., 1987-2012, indicating that every year in the range,
inclusive, is a copyrightable year that could otherwise be listed
individually.
Description
No description provided
Readme 3.1 GiB
Languages
C 48%
Ada 18.3%
C++ 14.1%
Go 7%
GCC Machine Description 4.6%
Other 7.7%