Commit fc7d1319 by Arnaud Charlet

[multiple changes]


2012-06-12  Arnaud Charlet  <charlet@adacore.com>

	* xref_lib.adb (Get_Full_Type): Add support for 'G'.

2012-06-12  Tristan Gingold  <gingold@adacore.com>

	* a-exexpr-gcc.adb (Unwind_Exception): Add 4 more private fields.

2012-06-12  Fedor Rybin  <frybin@adacore.com>

	* gnat_ugn.texi: Update doc on gnattest.

2012-06-12  Robert Dewar  <dewar@adacore.com>

	* sem_ch12.adb: Add comments.

From-SVN: r188453
parent 2137e8a6
2012-06-12 Arnaud Charlet <charlet@adacore.com>
* xref_lib.adb (Get_Full_Type): Add support for 'G'.
2012-06-12 Tristan Gingold <gingold@adacore.com>
* a-exexpr-gcc.adb (Unwind_Exception): Add 4 more private fields.
2012-06-12 Fedor Rybin <frybin@adacore.com>
* gnat_ugn.texi: Update doc on gnattest.
2012-06-12 Robert Dewar <dewar@adacore.com>
* sem_ch12.adb: Add comments.
2012-06-12 Robert Dewar <dewar@adacore.com> 2012-06-12 Robert Dewar <dewar@adacore.com>
* switch-c.adb, inline.adb, usage.adb, opt.ads: Minor reformatting. * switch-c.adb, inline.adb, usage.adb, opt.ads: Minor reformatting.
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- B o d y -- -- B o d y --
-- -- -- --
-- Copyright (C) 1992-2011, Free Software Foundation, Inc. -- -- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
-- -- -- --
-- GNAT is free software; you can redistribute it and/or modify it under -- -- 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- -- -- terms of the GNU General Public License as published by the Free Soft- --
...@@ -108,6 +108,14 @@ package body Exception_Propagation is ...@@ -108,6 +108,14 @@ package body Exception_Propagation is
Cleanup : System.Address; Cleanup : System.Address;
Private1 : Unwind_Word; Private1 : Unwind_Word;
Private2 : Unwind_Word; Private2 : Unwind_Word;
-- Usual exception structure has only 2 private fields, but the SEH
-- one has 6. To avoid makeing this file more complex, we use 6 fields
-- on all platforms, wasting a few bytes on some.
Private3 : Unwind_Word;
Private4 : Unwind_Word;
Private5 : Unwind_Word;
Private6 : Unwind_Word;
end record; end record;
pragma Convention (C, Unwind_Exception); pragma Convention (C, Unwind_Exception);
-- Map the GCC struct used for exception handling -- Map the GCC struct used for exception handling
...@@ -475,8 +483,7 @@ package body Exception_Propagation is ...@@ -475,8 +483,7 @@ package body Exception_Propagation is
new GNAT_GCC_Exception' new GNAT_GCC_Exception'
(Header => (Class => GNAT_Exception_Class, (Header => (Class => GNAT_Exception_Class,
Cleanup => GNAT_GCC_Exception_Cleanup'Address, Cleanup => GNAT_GCC_Exception_Cleanup'Address,
Private1 => 0, others => 0),
Private2 => 0),
Occurrence => Excep.all); Occurrence => Excep.all);
-- Propagate it -- Propagate it
......
...@@ -18068,24 +18068,24 @@ Verbose mode: generate version information. ...@@ -18068,24 +18068,24 @@ Verbose mode: generate version information.
@findex gnattest @findex gnattest
@noindent @noindent
@command{gnattest} is an ASIS-based utility that creates unit-test stubs @command{gnattest} is an ASIS-based utility that creates unit-test skeletons
as well as a test driver infrastructure (harness). @command{gnattest} creates as well as a test driver infrastructure (harness). @command{gnattest} creates
a stub for each visible subprogram in the packages under consideration when a skeleton for each visible subprogram in the packages under consideration when
they do not exist already. they do not exist already.
In order to process source files from a project, @command{gnattest} has to In order to process source files from a project, @command{gnattest} has to
semantically analyze the sources. Therefore, test stubs can only be semantically analyze the sources. Therefore, test skeletons can only be
generated for legal Ada units. If a unit is dependent on other units, generated for legal Ada units. If a unit is dependent on other units,
those units should be among the source files of the project or of other projects those units should be among the source files of the project or of other projects
imported by this one. imported by this one.
Generated stubs and harnesses are based on the AUnit testing framework. AUnit is Generated skeletons and harnesses are based on the AUnit testing framework.
an Ada adaptation of the xxxUnit testing frameworks, similar to JUnit for Java AUnit is an Ada adaptation of the xxxUnit testing frameworks, similar to JUnit
or CppUnit for C++. While it is advised that gnattest users read the AUnit for Java or CppUnit for C++. While it is advised that gnattest users read
manual, deep knowledge of AUnit is not necessary for using gnattest. For correct the AUnit manual, deep knowledge of AUnit is not necessary for using gnattest.
operation of @command{gnattest}, AUnit should be installed and aunit.gpr must be For correct operation of @command{gnattest}, AUnit should be installed and
on the project path. This happens automatically when Aunit is installed at its aunit.gpr must be on the project path. This happens automatically when Aunit
default location. is installed at its default location.
@menu @menu
* Running gnattest:: * Running gnattest::
* Switches for gnattest:: * Switches for gnattest::
...@@ -18124,11 +18124,6 @@ specifies the project defining the location of source files. When no ...@@ -18124,11 +18124,6 @@ specifies the project defining the location of source files. When no
file names are provided on the command line, all sources in the project file names are provided on the command line, all sources in the project
are used as input. This switch is required. are used as input. This switch is required.
@item --harness-dir=dirname
specifies the directory that will hold the harness packages and project file
for the test driver. The harness directory should be specified either by that
switch or by the corresponding attribute in the project file.
@item filename @item filename
is the name of the source file containing the library unit package declaration is the name of the source file containing the library unit package declaration
for which a test package will be created. The file name may be given with a for which a test package will be created. The file name may be given with a
...@@ -18137,7 +18132,7 @@ path. ...@@ -18137,7 +18132,7 @@ path.
@item @samp{@var{gcc_switches}} @item @samp{@var{gcc_switches}}
is a list of switches for is a list of switches for
@command{gcc}. These switches will be passed on to all compiler invocations @command{gcc}. These switches will be passed on to all compiler invocations
made by @command{gnatstub} to generate a set of ASIS trees. Here you can provide made by @command{gnattest} to generate a set of ASIS trees. Here you can provide
@option{^-I^/INCLUDE_DIRS=^} switches to form the source search path, @option{^-I^/INCLUDE_DIRS=^} switches to form the source search path,
use the @option{-gnatec} switch to set the configuration file, use the @option{-gnatec} switch to set the configuration file,
use the @option{-gnat05} switch if sources should be compiled in use the @option{-gnat05} switch if sources should be compiled in
...@@ -18152,13 +18147,13 @@ is an optional sequence of switches as described in the next section. ...@@ -18152,13 +18147,13 @@ is an optional sequence of switches as described in the next section.
@itemize @bullet @itemize @bullet
@item automatic harness: @item automatic harness:
the harness code, which is located either in the harness-dir as specified on the harness code, which is located by default in "gnattest/harness" directory
the command line or in the project file. All of this code is generated that is created in the object directory of corresponding project file. All of
completely automatically and can be destroyed and regenerated at will. It is not this code is generated completely automatically and can be destroyed and
recommended to modify this code manually, since it could easily be overridden regenerated at will. It is not recommended to modify this code manually, since
by mistake. The entry point in the harness code is the project file named it could easily be overridden by mistake. The entry point in the harness code is
@command{test_driver.gpr}. Tests can be compiled and run using a command the project file named @command{test_driver.gpr}. Tests can be compiled and run
such as: using a command such as:
@smallexample @smallexample
gnatmake -P<harness-dir>/test_driver gnatmake -P<harness-dir>/test_driver
...@@ -18168,18 +18163,17 @@ test_runner ...@@ -18168,18 +18163,17 @@ test_runner
Note that you might need to specify the necessary values of scenario variables Note that you might need to specify the necessary values of scenario variables
when you are not using the AUnit defaults. when you are not using the AUnit defaults.
@item actual unit test stubs: @item actual unit test skeletons:
a test stub for each visible subprogram is created in a separate file, if it a test skeleton for each visible subprogram is created in a separate file, if it
doesn't exist already. By default, those separate test files are located in a doesn't exist already. By default, those separate test files are located in a
"tests" directory that is created in the directory containing the source file "gnattest/tests" directory that is created in the object directory of
itself. If it is not appropriate to create the tests in subdirectories of the corresponding project file. For example, if a source file my_unit.ads in
source, option @option{--separate-root} can be used. For example, if a source directory src contains a visible subprogram Proc, then the corresponding unit
file my_unit.ads in directory src contains a visible subprogram Proc, then test will be found in file src/tests/my_unit-test_data-tests-proc_<code>.adb.
the corresponding unit test will be found in file <code> is a signature encoding used to differentiate test names in case of
src/tests/my_unit-tests-proc_<code>.adb. <code> is a signature encoding used to overloading.
differentiate test names in case of overloading.
Note that if the project already has both my_unit.ads and my_unit-test_data.ads,
Note that if the project already has both my_unit.ads and my_unit-tests.ads,
this will cause a name conflict with the generated test package. this will cause a name conflict with the generated test package.
@end itemize @end itemize
...@@ -18215,30 +18209,48 @@ Suppresses noncritical output messages. ...@@ -18215,30 +18209,48 @@ Suppresses noncritical output messages.
@cindex @option{-v} (@command{gnattest}) @cindex @option{-v} (@command{gnattest})
Verbose mode: generates version information. Verbose mode: generates version information.
@item --liskov @item --validate-type-extensions
@cindex @option{--liskov} (@command{gnattest}) @cindex @option{--validate-type-extensions} (@command{gnattest})
Enables Liskov verification: run all tests from all parents in order Enables substitution check: run all tests from all parents in order
to check substitutability. to check substitutability.
@item --stub-default=@var{val} @item --skeleton-default=@var{val}
@cindex @option{--stub-default} (@command{gnattest}) @cindex @option{--skeleton-default} (@command{gnattest})
Specifies the default behavior of generated stubs. @var{val} can be either Specifies the default behavior of generated skeletons. @var{val} can be either
"fail" or "pass", "fail" being the default. "fail" or "pass", "fail" being the default.
@item --separate-root=@var{dirname} @item --tests-root=@var{dirname}
@cindex @option{--separate-root} (@command{gnattest}) @cindex @option{--tests-root} (@command{gnattest})
The directory hierarchy of tested sources is recreated in the @var{dirname} The directory hierarchy of tested sources is recreated in the @var{dirname}
directory, and test packages are placed in corresponding directories. directory, and test packages are placed in corresponding directories.
If the @var{dirname} is a relative path, it is considered relative to the object
directory of the project file. When all sources from all projects are taken
recursively from all projects, directory hierarchies of tested sources are
recreated for each project in their object directories and test packages are
placed accordingly.
@item --subdir=@var{dirname} @item --subdir=@var{dirname}
@cindex @option{--subdir} (@command{gnattest}) @cindex @option{--subdir} (@command{gnattest})
Test packages are placed in subdirectories. This is the default output mode Test packages are placed in subdirectories.
since it does not require any additional input from the user. Subdirectories
named "tests" will be created by default. @item --tests-dir=@var{dirname}
@cindex @option{--tests-dir} (@command{gnattest})
All test packages are placed in the @var{dirname} directory.
If the @var{dirname} is a relative path, it is considered relative to the object
directory of the project file. When all sources from all projects are taken
recursively from all projects, @var{dirname} directories are created for each
project in their object directories and test packages are placed accordingly.
@item --harness-dir=@var{dirname}
@cindex @option{--harness-dir} (@command{gnattest})
specifies the directory that will hold the harness packages and project file
for the test driver. If the @var{dirname} is a relative path, it is considered
relative to the object directory of the project file.
@end table @end table
@option{--separate_root} and @option{--subdir} switches are mutually exclusive. @option{--tests_root}, @option{--subdir} and @option{--tests-dir} switches are
mutually exclusive.
@node Project Attributes for gnattest @node Project Attributes for gnattest
@section Project Attributes for @command{gnattest} @section Project Attributes for @command{gnattest}
...@@ -18251,13 +18263,17 @@ package gnattest. Here is the list of attributes: ...@@ -18251,13 +18263,17 @@ package gnattest. Here is the list of attributes:
@itemize @bullet @itemize @bullet
@item Separate_Stub_Root @item Tests_Root
is used to select the same output mode as with the --separate-root option. is used to select the same output mode as with the --tests-root option.
This attribute cannot be used together with Stub_Subdir. This attribute cannot be used together with Subdir or Tests_Dir.
@item Stub_Subdir @item Subdir
is used to select the same output mode as with the --subdir option. is used to select the same output mode as with the --subdir option.
This attribute cannot be used together with Separate_Stub_Root. This attribute cannot be used together with Tests_Root or Tests_Dir.
@item Tests_Dir
is used to select the same output mode as with the --tests-dir option.
This attribute cannot be used together with Subdir or Tests_Root.
@item Harness_Dir @item Harness_Dir
is used to specify the directory in which to place harness packages and project is used to specify the directory in which to place harness packages and project
...@@ -18267,9 +18283,9 @@ file for the test driver, otherwise specified by --harness-dir. ...@@ -18267,9 +18283,9 @@ file for the test driver, otherwise specified by --harness-dir.
is used to specify the project file, otherwise given by is used to specify the project file, otherwise given by
--additional-tests switch. --additional-tests switch.
@item Stubs_Default @item Skeletons_Default
is used to specify the default behaviour of test stubs, otherwise is used to specify the default behaviour of test skeletons, otherwise
specified by --stub-default option. The value of this attribute specified by --skeleton-default option. The value of this attribute
should be either "pass" or "fail". should be either "pass" or "fail".
@end itemize @end itemize
...@@ -18309,16 +18325,16 @@ Since no special output option was specified, the test package Simple.Tests ...@@ -18309,16 +18325,16 @@ Since no special output option was specified, the test package Simple.Tests
is located in: is located in:
@smallexample @smallexample
<install_prefix>/share/examples/gnattest/simple/src/tests <install_prefix>/share/examples/gnattest/simple/obj/gnattest/tests
@end smallexample @end smallexample
For each package containing visible subprograms, a child test package is For each package containing visible subprograms, a child test package is
generated. It contains one test routine per tested subprogram. Each generated. It contains one test routine per tested subprogram. Each
declaration of a test subprogram has a comment specifying which tested declaration of a test subprogram has a comment specifying which tested
subprogram it corresponds to. All of the test routines have separate bodies. subprogram it corresponds to. All of the test routines have separate bodies.
The test routine located at simple-tests-test_inc_5eaee3.adb contains a single The test routine located at simple-test_data-tests-test_inc_5eaee3.adb contains
statement: a call to procedure Assert. It has two arguments: the Boolean a single statement: a call to procedure Assert. It has two arguments:
expression we want to check and the diagnosis message to display if the Boolean expression we want to check and the diagnosis message to display if
the condition is false. the condition is false.
That is where actual testing code should be written after a proper setup. That is where actual testing code should be written after a proper setup.
...@@ -18336,22 +18352,24 @@ is reported. ...@@ -18336,22 +18352,24 @@ is reported.
@noindent @noindent
Besides test routines themselves, each test package has an inner package Besides test routines themselves, each test package has a parent package
Env_Mgmt that has two procedures: User_Set_Up and User_Tear_Down. Test_Data that has two procedures: Set_Up and Tear_Down. This package is never
User_Set_Up is called before each test routine of the package and overwritten by the tool. Set_Up is called before each test routine of the
User_Tear_Down is called after each test routine. Those two procedures can package and Tear_Down is called after each test routine. Those two procedures
be used to perform necessary initialization and finalization, can be used to perform necessary initialization and finalization,
memory allocation, etc. memory allocation, etc. Test type declared in Test_Data package is parent type
for the test type of test package and can have user-defined components whose
values can be set by Set_Up routine and used in test routines afterwards.
@node Regenerating Tests @node Regenerating Tests
@section Regenerating Tests @section Regenerating Tests
@noindent @noindent
Bodies of test routines and env_mgmt packages are never overridden after they Bodies of test routines and test_data packages are never overridden after they
have been created once. As long as the name of the subprogram, full expanded Ada have been created once. As long as the name of the subprogram, full expanded Ada
names, and the order of its parameters is the same, the old test routine will names, and the order of its parameters is the same, the old test routine will
fit in its place and no test stub will be generated for the subprogram. fit in its place and no test skeleton will be generated for the subprogram.
This can be demonstrated with the previous example. By uncommenting declaration This can be demonstrated with the previous example. By uncommenting declaration
and body of function Dec in simple.ads and simple.adb, running and body of function Dec in simple.ads and simple.adb, running
...@@ -18364,10 +18382,10 @@ gprbuild -Ptest_driver ...@@ -18364,10 +18382,10 @@ gprbuild -Ptest_driver
test_runner test_runner
@end smallexample @end smallexample
the old test is not replaced with a stub, nor is it lost, but a new test stub is the old test is not replaced with a stub, nor is it lost, but a new test
created for function Dec. skeleton is created for function Dec.
The only way of regenerating tests stubs is to remove the previously created The only way of regenerating tests skeletons is to remove the previously created
tests. tests.
@node Default Test Behavior @node Default Test Behavior
...@@ -18380,8 +18398,9 @@ either count them all as failed (this is useful to see which tests are still ...@@ -18380,8 +18398,9 @@ either count them all as failed (this is useful to see which tests are still
left to implement) or as passed (to sort out unimplemented ones from those left to implement) or as passed (to sort out unimplemented ones from those
actually failing). actually failing).
The test driver accepts a switch to specify this behavior: --stub-default=val, The test driver accepts a switch to specify this behavior:
where val is either "pass" or "fail" (exactly as for @command{gnattest}). --skeleton-default=val, where val is either "pass" or "fail" (exactly as for
@command{gnattest}).
The default behavior of the test driver is set with the same switch The default behavior of the test driver is set with the same switch
as passed to gnattest when generating the test driver. as passed to gnattest when generating the test driver.
...@@ -18399,11 +18418,11 @@ makes both tests pass, even the unimplemented one. ...@@ -18399,11 +18418,11 @@ makes both tests pass, even the unimplemented one.
@noindent @noindent
Creation of test stubs for primitive operations of tagged types entails a number Creation of test skeletons for primitive operations of tagged types entails
of features. Test routines for all primitives of a given tagged type are a number of features. Test routines for all primitives of a given tagged type
placed in a separate child package named according to the tagged type. For are placed in a separate child package named according to the tagged type. For
example, if you have tagged type T in package P, all tests for primitives example, if you have tagged type T in package P, all tests for primitives
of T will be in P.T_Tests. of T will be in P.T_Test_Data.T_Tests.
Consider running gnattest on the second example (note: actual tests for this Consider running gnattest on the second example (note: actual tests for this
example already exist, so there's no need to worry if the tool reports that example already exist, so there's no need to worry if the tool reports that
...@@ -18415,10 +18434,10 @@ gnattest --harness-dir=driver -Ptagged_rec.gpr ...@@ -18415,10 +18434,10 @@ gnattest --harness-dir=driver -Ptagged_rec.gpr
@end smallexample @end smallexample
Taking a closer look at the test type declared in the test package Taking a closer look at the test type declared in the test package
Speed1.Controller_Tests is necessary. It is declared in: Speed1.Controller_Test_Data is necessary. It is declared in:
@smallexample @smallexample
<install_prefix>/share/examples/gnattest/tagged_rec/src/tests <install_prefix>/share/examples/gnattest/tagged_rec/obj/gnattest/tests
@end smallexample @end smallexample
Test types are direct or indirect descendants of Test types are direct or indirect descendants of
...@@ -18433,10 +18452,10 @@ package Speed2.Auto_Controller, you will see that Test_Auto_Controller ...@@ -18433,10 +18452,10 @@ package Speed2.Auto_Controller, you will see that Test_Auto_Controller
actually derives from Test_Controller rather than AUnit type Test_Fixture. actually derives from Test_Controller rather than AUnit type Test_Fixture.
Thus, test types mirror the hierarchy of tested types. Thus, test types mirror the hierarchy of tested types.
The User_Set_Up procedure of Env_Mgmt package corresponding to a test package The Set_Up procedure of Test_Data package corresponding to a test package
of primitive operations of type T assigns to Fixture a reference to an of primitive operations of type T assigns to Fixture a reference to an
object of that exact type T. Notice, however, that if the tagged type has object of that exact type T. Notice, however, that if the tagged type has
discriminants, the User_Set_Up only has a commented template for setting discriminants, the Set_Up only has a commented template for setting
up the fixture, since filling the discriminant with actual value is up up the fixture, since filling the discriminant with actual value is up
to the user. to the user.
...@@ -18468,26 +18487,29 @@ derived type. ...@@ -18468,26 +18487,29 @@ derived type.
@noindent @noindent
Tagged Types Substitutability Testing is a way of verifying the Liskov Tagged Types Substitutability Testing is a way of verifying the global type
substitution principle (LSP) by testing. LSP is a principle stating that if consistency by testing. Global type consistency is a principle stating that if
S is a subtype of T (in Ada, S is a derived type of tagged type T), S is a subtype of T (in Ada, S is a derived type of tagged type T),
then objects of type T may be replaced with objects of type S (that is, then objects of type T may be replaced with objects of type S (that is,
objects of type S may be substituted for objects of type T), without objects of type S may be substituted for objects of type T), without
altering any of the desirable properties of the program. When the properties altering any of the desirable properties of the program. When the properties
of the program are expressed in the form of subprogram preconditions and of the program are expressed in the form of subprogram preconditions and
postconditions (let's call them pre and post), LSP is formulated as relations postconditions (let's call them pre and post), the principle is formulated as
between the pre and post of primitive operations and the pre and post of their relations between the pre and post of primitive operations and the pre and post
derived operations. The pre of a derived operation should not be stronger than of their derived operations. The pre of a derived operation should not be
the original pre, and the post of the derived operation should not be weaker stronger than the original pre, and the post of the derived operation should
than the original post. Those relations ensure that verifying if a dispatching not be weaker than the original post. Those relations ensure that verifying if
call is safe can be done just by using the pre and post of the root operation. a dispatching call is safe can be done just by using the pre and post of the
root operation.
Verifying LSP by testing consists of running all the unit tests associated with
the primitives of a given tagged type with objects of its derived types. Verifying global type consistency by testing consists of running all the unit
tests associated with the primitives of a given tagged type with objects of its
derived types.
In the example used in the previous section, there was clearly a violation of In the example used in the previous section, there was clearly a violation of
LSP. The overriding primitive Adjust_Speed in package Speed2 removes the type consistency. The overriding primitive Adjust_Speed in package Speed2
functionality of the overridden primitive and thus doesn't respect LSP. removes the functionality of the overridden primitive and thus doesn't respect
the consistency principle.
Gnattest has a special option to run overridden parent tests against objects Gnattest has a special option to run overridden parent tests against objects
of the type which have overriding primitives: of the type which have overriding primitives:
...@@ -18501,12 +18523,17 @@ test_runner ...@@ -18501,12 +18523,17 @@ test_runner
While all the tests pass by themselves, the parent test for Adjust_Speed fails While all the tests pass by themselves, the parent test for Adjust_Speed fails
against objects of the derived type. against objects of the derived type.
Non-overridden tests are already inherited for derived test types, so the
--validate-type-extensions enables the application of overriden tests to objects
of derived types.
@node Testing with Contracts @node Testing with Contracts
@section Testing with Contracts @section Testing with Contracts
@noindent @noindent
@command{gnattest} supports pragmas Precondition, Postcondition, and Test_Case. @command{gnattest} supports pragmas Precondition, Postcondition, and Test_Case,
as well as corresponding aspects.
Test routines are generated, one per each Test_Case associated with a tested Test routines are generated, one per each Test_Case associated with a tested
subprogram. Those test routines have special wrappers for tested functions subprogram. Those test routines have special wrappers for tested functions
that have composition of pre- and postcondition of the subprogram with that have composition of pre- and postcondition of the subprogram with
...@@ -18615,7 +18642,6 @@ The tool currently does not support following features: ...@@ -18615,7 +18642,6 @@ The tool currently does not support following features:
@itemize @bullet @itemize @bullet
@item generic tests for generic packages and package instantiations @item generic tests for generic packages and package instantiations
@item tests for protected subprograms and entries @item tests for protected subprograms and entries
@item aspects Precondition, Postcondition, and Test_Case
@item generating test packages for code that is not conformant with ada 2005 @item generating test packages for code that is not conformant with ada 2005
@end itemize @end itemize
......
...@@ -9449,7 +9449,8 @@ package body Sem_Ch12 is ...@@ -9449,7 +9449,8 @@ package body Sem_Ch12 is
Has_Untagged_Inc := True; Has_Untagged_Inc := True;
end if; end if;
-- Add comments for following code??? -- This is a temporary implementation. Most of this code has
-- to be moved to sem_ch8, and will be commented then ???
if Is_Entity_Name (Actual) if Is_Entity_Name (Actual)
and then not Is_Overloaded (Actual) and then not Is_Overloaded (Actual)
......
...@@ -538,6 +538,7 @@ package body Xref_Lib is ...@@ -538,6 +538,7 @@ package body Xref_Lib is
when 'h' => return "interface"; when 'h' => return "interface";
when 'g' => return "macro"; when 'g' => return "macro";
when 'G' => return "function macro";
when 'J' => return "class"; when 'J' => return "class";
when 'K' => return "package"; when 'K' => return "package";
when 'k' => return "generic package"; when 'k' => return "generic package";
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment