@@ -2493,15 +2493,15 @@ package body Einfo.Utils is
return Direct_Primitive_Operations
(Corresponding_Record_Type (Id));
- -- If expansion is disabled the corresponding record type is absent,
- -- but if the type has ancestors it may have primitive operations.
-
- elsif Is_Tagged_Type (Id) then
- return Direct_Primitive_Operations (Id);
+ -- When expansion is disabled, the corresponding record type is
+ -- absent, but if this is a tagged type with ancestors, or if the
+ -- extension of prefixed calls for untagged types is enabled, then
+ -- it may have associated primitive operations.
else
- return No_Elist;
+ return Direct_Primitive_Operations (Id);
end if;
+
else
return Direct_Primitive_Operations (Id);
end if;
@@ -2031,6 +2031,12 @@ package body Sem_Ch9 is
Set_Has_Delayed_Freeze (T);
Set_Stored_Constraint (T, No_Elist);
+ -- Initialize type's primitive operations list, for possible use when
+ -- the extension of prefixed call notation for untagged types is enabled
+ -- (such as by use of -gnatX).
+
+ Set_Direct_Primitive_Operations (T, New_Elmt_List);
+
-- Mark this type as a protected type for the sake of restrictions,
-- unless the protected type is declared in a private part of a package
-- of the runtime. With this exception, the Suspension_Object from
@@ -3152,6 +3158,12 @@ package body Sem_Ch9 is
Set_Has_Delayed_Freeze (T, True);
Set_Stored_Constraint (T, No_Elist);
+ -- Initialize type's primitive operations list, for possible use when
+ -- the extension of prefixed call notation for untagged types is enabled
+ -- (such as by use of -gnatX).
+
+ Set_Direct_Primitive_Operations (T, New_Elmt_List);
+
-- Set the SPARK_Mode from the current context (may be overwritten later
-- with an explicit pragma).