aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Squirek <squirek@adacore.com>2022-12-05 22:05:44 +0000
committerMarc Poulhiès <poulhies@adacore.com>2023-01-05 15:29:59 +0100
commit2aa5f94243c5d463cc62a3c91ebf87fb1c665b83 (patch)
tree12de5352a2c2be4d5b549b073db31daa4c1e80a1
parent8313c5f600fe935d00b4ff52539e01df67af928d (diff)
downloadgcc-2aa5f94243c5d463cc62a3c91ebf87fb1c665b83.zip
gcc-2aa5f94243c5d463cc62a3c91ebf87fb1c665b83.tar.gz
gcc-2aa5f94243c5d463cc62a3c91ebf87fb1c665b83.tar.bz2
ada: Spurious error on Lock_Free protected type with discriminants
This patch corrects an issue in the compiler whereby unprefixed discriminants appearing in protected subprograms were unable to be properly resolved - leading to spurious resolution errors. gcc/ada/ * sem_ch8.adb (Set_Entity_Or_Discriminal): Verify we are actually resetting the entity field of a non-prefixed discriminant reference.
-rw-r--r--gcc/ada/sem_ch8.adb12
1 files changed, 7 insertions, 5 deletions
diff --git a/gcc/ada/sem_ch8.adb b/gcc/ada/sem_ch8.adb
index 841076b..fe89e11 100644
--- a/gcc/ada/sem_ch8.adb
+++ b/gcc/ada/sem_ch8.adb
@@ -4891,14 +4891,16 @@ package body Sem_Ch8 is
then
null;
- -- Don't replace the discriminant in strict preanalysis mode since
- -- it can lead to errors during full analysis when the discriminant
- -- gets referenced later.
+ -- Don't replace a non-qualified discriminant in strict preanalysis
+ -- mode since it can lead to errors during full analysis when the
+ -- discriminant gets referenced later.
-- This can occur in situations where a protected type contains
- -- an expression function which references a discriminant.
+ -- an expression function which references a non-prefixed
+ -- discriminant.
- elsif Preanalysis_Active
+ elsif No (P)
+ and then Preanalysis_Active
and then Inside_Preanalysis_Without_Freezing = 0
then
null;