diff options
author | Ed Schonberg <schonberg@adacore.com> | 2017-01-23 12:00:26 +0000 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2017-01-23 13:00:26 +0100 |
commit | 913e4b3617fe7f46fbdbb72b010cf6cf7201d329 (patch) | |
tree | a30bc477380cd60dbeb59b86ec2abe49e3833502 /gcc/ada/sem_ch4.adb | |
parent | a77152ca855e6009a38ee011043465d60ed8f5c2 (diff) | |
download | gcc-913e4b3617fe7f46fbdbb72b010cf6cf7201d329.zip gcc-913e4b3617fe7f46fbdbb72b010cf6cf7201d329.tar.gz gcc-913e4b3617fe7f46fbdbb72b010cf6cf7201d329.tar.bz2 |
sem_ch4.adb (Try_Primitive_Operations, [...]): argument is valid if it is a derived type with unknown discriminants that...
2017-01-23 Ed Schonberg <schonberg@adacore.com>
* sem_ch4.adb (Try_Primitive_Operations,
Is_Valid_First_Argument_Of): argument is valid if it is a derived
type with unknown discriminants that matches its underlying
record view.
* exp_util.adb (Expand_Subtype_From_Expr): Do not expand
expression if its type is derived from a limited type with
unknown discriminants, because the expansion (which is a call)
must be expanded in the enclosing context to add the proper build-
in-place parameters to the call.
* lib.ads, exp_ch9.adb: Minor fixes in comments.
From-SVN: r244790
Diffstat (limited to 'gcc/ada/sem_ch4.adb')
-rw-r--r-- | gcc/ada/sem_ch4.adb | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/ada/sem_ch4.adb b/gcc/ada/sem_ch4.adb index 26d78b6..7a26661 100644 --- a/gcc/ada/sem_ch4.adb +++ b/gcc/ada/sem_ch4.adb @@ -9294,6 +9294,13 @@ package body Sem_Ch4 is or else Base_Type (Obj_Type) = Typ or else Corr_Type = Typ + -- Object may be of a derived type whose parent has unknown + -- discriminants, in which case the type matches the + -- underlying record view of its base. + + or else (Has_Unknown_Discriminants (Typ) + and then Typ = Underlying_Record_View (Base_Type (Obj_Type))) + -- Prefix can be dereferenced or else |