ACATS Test Modification List

Version 4.1B
November 18, 2016

What is this?

This is the ACATS modification list for ACATS 4.1. This document includes test corrections, test removals, and new tests for ACATS 4.1. ACATS 4.1 is the current test suite for Ada, covering the third edition of Ada, ISO/IEC 8652:2012 (usually known as "Ada 2012").

ACATS Modification List version 3.1N for ACATS 3.1 is the current list for that test suite. ACATS 3.1 should be used for testing implementations that support Amendment 1 (ISO/IEC 8652:1995/AMD 1:2007, often known as "Ada 2005"), and will continue to be maintained as necessary for the foreseeable future.

ACATS Modification List version 2.6D for ACATS 2.6 is the current list for that test suite. ACATS 2.6 should be used for testing implementations of the second edition of Ada, ISO/IEC 8652:1995 (usually known as "Ada 95"); it also will continue to be maintained as necessary for the foreseeable future.

Changes from the last list:

A number of tests changed status on July 1st and October 1st, this list reflects those changes.

New test B611014 checks that prefixes of Old attribute references that are potentially unevaluated must statically denote an object. New test B611015 checks that prefixes of Old attributes cannot have a limited type. New test B611016 checks that Pre'Class and Post'Class cannot be given on entries and protected operations even if the type is tagged. New test B611017 checks that Pre'Class cannot be given on an overriding subprogram if none of the original subprogram give Pre'Class. New test B611018 checks 6.1.1(10-16/3). New test B611019 checks 6.1.1(17/3).

New tests posted between October 1, 2016 and December 31, 2016 will become required for conformity assessments on July 1, 2017. New tests posted between July 1, 2016 and September 30, 2016 will become required for conformity assessments on April 1, 2017. New tests posted between April 1, 2016 and June 30, 2016 will become required for conformity assessments on January 1, 2017. New tests posted before April 1, 2016 are required for conformity assessments. The effective dates of tests are marked in the lists.

Questions about this document? Contact the ACAA Technical Agent at agent@ada-auth.org.

ACATS 4.1 includes optional Test Grading tools

ACATS 4.1 introduces new test grading tools.

When the ACATS was designed (as the ACVC in the early 1980s), the intention always was that running it would give a simple and clear Pass or Fail result. However, grading of tests (particularly of B and L Tests) is somewhat subjective and very time-consuming. (Test grading typically involved poring over compiler listings of the entire ACATS with a large highlighter.) The subjectivity was acceptable in the days of common formal testing, as the formal testers would enforce a common grading standard (even if no one could describe what that was), but in an age of self-testing, it reduces the value of the ACATS.

As such, we're introducing a long-overdue set of automated grading tools. These tools are intended to:

The tools also will optionally give feedback to implementers about quality of error message positioning and of error cascades (does one error generate multiple messages?). (Since "goodness of an implementation" is not something that the ACATS tests for, this is not an official goal for the tools.)

This is an ambitious set of goals. It's unlikely that they'll be completely met by the initial versions of the tools. As such, their use will be completely optional (but encouraged!) for ACATS 4.1. The tools will be updated periodically by the normal process for updating the ACATS – an ACATS Modification List like this one.

Details on the operations of the tools can be found in the ACATS 4.1 documentation (that documentation can be found at http://www.ada-auth.org/acats-files/4.1/docs/UG-6.HTM). As always, if you have questions, contact the ACAA Technical Agent at agent@ada-auth.org.

Notice:

The ACAA has created and maintains the Ada Conformity Assessment Test Suite for the purpose of conformity assessments conducted in accordance with the International Standard ISO/IEC 18009 - Ada: Conformity assessment of a language processor. This test suite should not be used to make claims of conformance unless used in accordance with ISO/IEC 18009 and any applicable ACAA procedures.

List explanation:

Test numbers given are for the basic test. Categories are "Withdrawn" (the test should not be processed for Ada conformity assessments); "Allowed Modification" (either the original test or the modified one should be processed for Ada conformity assessments); "Modified" (the modified test must be processed for Ada conformity assessments); "Pending New" (the test does not need to be processed for Ada conformity assessments, but will be added in the future); "New" (the test is processed for Ada conformity assessments).

ACATS version labels are provided with all new and modified tests. Use this label to retrieve the test from the ACATS VCS. See "How to get new and modified tests".

In citations, line numbers are given relative to the start of a test file in the format of '@<line#,line#,...>'; if a test program comprises more than one file, then the particular file will be indicated by "fn", where "n" is the test-program name's file-designator numeral. E.g., "B38103E : @f1-31, ... " denotes test file b38103e1.ada. In cases where there are two or more rationales for different errors in a test program, these different rationales with their respective line citations are listed on separate lines. References to the Ada standards are given in the format:
   <section|chapter>.<clause>[.<subclause>]:<paragraph>
These references are to the Ada standard as available at http://www.adaic.org/resources/add_content/standards/12rm/html/RM-TOC.html.

 

Main list:

===== Core Language =====

Name     Category  Version label  (effective date; old version label)
         Short description.

B38003D [Modified] VCS Label: A4_1A
        Corrected error tags @70,76,82,88 so "optional" and "error" are
        on the same line, as required by the test standards.

C3A0030 [New] VCS Label: A4_1A
        Check that an access discriminant is only null excluding if it
        includes a null exclusion.

B3A1001 [Modified] VCS Label: A4_1A
        Split Pack6 so possible error sets don't intersect; fixed
        overlong lines.

B3A1002 [Modified] VCS Label: A4_1A
        Split Pack6 so possible error sets don't intersect; fixed
        overlong lines.

B455002 [Modified] VCS Label: A4_1A
        Corrected casing of error tags and fixed overlong lines.

C480001 [New] VCS Label: A4_1A
        Check that an initialized allocator for a class-wide type does
        an accessibility check on the tag of the initializing object.

C52101A [Modified] VCS Label: A4_1A
        Corrected comment @49 not to have the form of an error tag.

B611001 [New] VCS Label: A4_1A
        Check that Pre and Post are only allowed on
        subprograms and entries (and not on subprogram instances).        

B611002 [New] VCS Label: A4_1A
        Check that Pre and Post are not allowed on subprograms
        acting as completions.

B611003 [New] VCS Label: A4_1A
        Check that Pre'Class and Post'Class are only allowed on primitive
        subprograms of tagged types. (Normal tagged types and interfaces.)

B611004 [New] VCS Label: A4_1A
        Check that Pre'Class and Post'Class are not allowed on
        subprograms acting as completions.

B611005 [New] VCS Label: A4_1A
        Check that Pre and Post are not allowed on abstract
        subprograms and null procedures.

B611006 [New] VCS Label: A4_1A
        Check that the restrictions on Pre'Class and
        Post'Class expressions added by AI12-0113-1 are enforced.

B611007 [New] VCS Label: A4_1A
        Check that Pre'Class and Post'Class are not allowed on entries
        and protected subprograms of untagged task and protected types.

B611008 [New] VCS Label: A4_1A
        Check various rules about the use of the Result attribute.

B611009 [New] VCS Label: A4_1A
        Check that F'Result is not allowed in the body of F.

B611010 [New] VCS Label: A4_1A
        Check that the Old attribute is not allowed in a subprogram or
        entry body, or in an accept statement.

B611011 [New] VCS Label: A4_1A
        Check the Old attribute cannot be used within a precondition
        expression nor in a generic specification outside of a
        postcondition expression.

B611012 [New] VCS Label: A4_1A
        Check that the prefix of an Old attribute cannot contain the
        Result attribute, another Old attribute, nor the index of a
        quantified expression.

B611013 [New] VCS Label: A4_1A
        For a discrete X, check that X'Old has the nominal subtype of X.

B611014 [Pending New] New VCS Label: A4_1B
                 Required after 2017-07-01
        If an Old attribute reference occurs in at a place where it is
        potentially unevaluated, check that the prefix must statically
        denote an object.

B611015 [Pending New] New VCS Label: A4_1B
                 Required after 2017-07-01
        Check that the prefix of an Old attribute cannot have a limited
        type.

B611016 [Pending New] New VCS Label: A4_1B
                 Required after 2017-07-01
        Check that tagged task and tagged protected types do not allow
        Pre'Class and Post'Class, nor are they allow on operations of
        those types.

B611017 [Pending New] New VCS Label: A4_1B
                 Required after 2017-07-01
        Check that Pre'Class cannot be specified for an overriding of a
        subprogram that does not specify Pre'Class.

B611018 [Pending New] New VCS Label: A4_1B
                 Required after 2017-07-01
        Check 6.1.1(10-16/3).

B611019 [Pending New] New VCS Label: A4_1B
                 Required after 2017-07-01
        Check 6.1.1(17/3).

C611A01 [New] VCS Label: A4_1A
        Check that preconditions and postconditions where both specific
        and class-wide contracts apply are checked properly.

C611A02 [New] VCS Label: A4_1A
        Check that the correct expressions are evaluated for specific
        preconditions and postconditions, and that they are evaluated
        at the correct point.

C611A03 [New] VCS Label: A4_1A
        Check that the correct expressions are evaluated for class-wide
        preconditions and postconditions, and that they are evaluated
        at the correct point.

C611B01 [New] VCS Label: A4_1A
        Check that X'Old has the tag of X and not the tag of the nominal
        subtype of X (for Post).

C611B02 [New] VCS Label: A4_1A
        Check that X'Old has the tag of X and not the tag of the nominal
        subtype of X (for Post'Class).

B62001C [Modified] VCS Label: A4_1A
        Changed error @35 to be optional, as the syntax error @33 is
        required (and the comment that only one error need be detected is
        bogus).

B62001D [Modified] VCS Label: A4_1A
        Changed error @41 to be optional, as the syntax error @33 is
        required (and the comment that only one error need be detected is
        bogus).

C650B04 [New] VCS Label: A4_1A
        Check that the result of a function that returns a class-wide
        tagged type does an accessibility check on the tag of the result
        object when the result expression is class-wide.

B740003 [Modified] VCS Label: A4_1A
        Modified criteria @75 so that it doesn't look like an error tag to
        the grading tools; also fixed an overlong line.

B750A07 [New] VCS Label: A4_1A
        Check that only legal expressions are allowed
        in the return expression of an expression function that returns a
        limited type.
        
B83F02C [Modified] VCS Label: A4_1A
        Updated many optional error markers to match ACATS standards.

B95007B [Modified] VCS Label: A4_1A
        Fixed error markers @62,66,70 to match ACATS standards.

BB42001 [New] VCS Label: A4_1A
        Check that the arguments of a pragma Assert have to
        have the correct types.

CB42001 [New] VCS Label: A4_1A
        Check the usual operation of pragma Assert, including the optional
        message.

BB42002 [New] VCS Label: A4_1A
        Check that the arguments of a pragma Assert cannot be reordered
        even if named notation is used.

CB42002 [New] VCS Label: A4_1A
        Check that if the assertion policy is Ignore, none of the
        expressions of a pragma Assert are evaluated and no exception is
        raised by the pragma.

BB42003 [New] VCS Label: A4_1A
        Check that a pragma Assertion_Policy is illegal if the
        policy is not recognized.

CB42003 [New] VCS Label: A4_1A
        Check that procedure Ada.Assertions.Assert evaluates its arguments
        and raises Assertion_Error regardless of the assertion policy.

CD11001 [New] VCS Label: A4_1A
        Check that appropriate entities are visible in an aspect
        specification.

BD4003A [Modified] VCS Label: A4_1A
        Moved error marker from @66 to @67 so it is on the incorrect
        construct.

CXB3023 [Pending New] New VCS Label: A4_1A
                 Required after 2017-01-01
        Check that a value of an unchecked union type (defined with
        pragma Unchecked_Union) can be passed to a C function.

CXB3024 [Pending New] New VCS Label: A4_1A
                 Required after 2017-01-01
        Check that a value of an unchecked union type (defined with
        aspect Unchecked_Union) can be passed to a C function.

===== Annex C =====

[None.]

===== Annex D =====

[None.]

===== Annex E =====

[None.]

===== Annex F =====

[None.]

===== Annex G =====

[None.]

===== Annex H =====

[None.]

===== Support =====

F611A00 [New] VCS Label: A4_1A
        Foundation for tests C611A01, C611A02, and C611A03.

F611B00 [New] VCS Label: A4_1A
        Foundation for tests C611B01 and C611B02.

 

How to get new and modified tests:

The official home of the ACATS test suite is the ACAA web site. The site can be accessed at www.ada-auth.org.

The complete set of official new and modified tests are available in the Mod_4_1B.Zip and Tar files on the ACAA web site.

Individual new and modified tests can be retrieved from the ACATS VCS. Simply navigate to the appropriate directory (folder), and select the test you want. Select the revision you want (usually the most recent) and it will be retrieved for you. Tests are stored in directories that correspond to the test's prefix. For instance, the test CD92001.A will be found in the CD directory. You can also browse the differences between versions of a test. [In case of a conflict, the files in the ACATS VCS should be considered the 'official' versions.]

If you cannot get the files from the official site or you cannot get the files in a format appropriate for your processor, please contact your ACAL.

The baseline ACATS 4.1 is available in various formats on the ACAA web site.

 

Summary lists:

Withdrawn Tests

(Refer to the main list for details)

None yet.

Allowed Modification Tests

(Refer to the main list for details)

None currently.

Modified Tests

(Refer to the main list for details)

B38003D
B3A1001
B3A1002
B455002
B62001C
B62001D
B740003
B83F02C
B95007B
BD4003A
C52101A

New Tests

(Refer to the main list for details)

B611001
B611002
B611003
B611004
B611005
B611006
B611007
B611008
B611009
B611010
B611011
B611012
B611013
B750A07
BB42001
BB42002
BB42003
C3A0030
C480001
C611A01
C611A02
C611A03
C611B01
C611B02
C650B04
CB42001
CB42002
CB42003
CD11001
F611A00
F611B00

Pending New Tests

(Refer to the main list for details)

B611014  2017-07-01
B611015  2017-07-01
B611016  2017-07-01
B611017  2017-07-01
B611018  2017-07-01
B611019  2017-07-01
CXB3023  2017-01-01
CXB3024  2017-01-01