]> git.ipfire.org Git - thirdparty/gcc.git/commit
ada: Implement change to SPARK RM rule on state refinement
authorYannick Moy <moy@adacore.com>
Thu, 24 Nov 2022 15:27:37 +0000 (16:27 +0100)
committerMarc Poulhiès <poulhies@adacore.com>
Mon, 28 Nov 2022 12:02:31 +0000 (13:02 +0100)
commit83e8d37fe39d7c1afce19b61bbc2dd828fa37c6f
tree70e71a68004e8053d451c58c5d08892b5f950749
parent2b293a949c0fbe21e47c4bc99f807dc941c02bb6
ada: Implement change to SPARK RM rule on state refinement

SPARK RM 7.1.4(4) does not mandate anymore that a package with abstract
states has a completing body, unless the package state is mentioned in
Part_Of specifications. Implement that change.

gcc/ada/

* sem_prag.adb (Check_Part_Of_Abstract_State): Add verification
related to use of Part_Of, so that constituents in private childs
that refer to state in a sibling or parent unit force that unit to
have a body.
* sem_util.adb (Check_State_Refinements): Drop the requirement to
have always a package body for state refinement, when the package
state is mentioned in no Part_Of specification.
* sem_ch3.adb (Analyze_Declarations): Refresh SPARK refs in comment.
* sem_ch7.adb (Analyze_Package_Declaration): Likewise.
gcc/ada/sem_ch3.adb
gcc/ada/sem_ch7.adb
gcc/ada/sem_prag.adb
gcc/ada/sem_util.adb