From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on ip-172-31-74-118.ec2.internal X-Spam-Level: X-Spam-Status: No, score=-1.9 required=3.0 tests=BAYES_00, T_FILL_THIS_FORM_SHORT autolearn=ham autolearn_force=no version=3.4.6 Path: eternal-september.org!reader02.eternal-september.org!aioe.org!RKN7TKnHC01q0gdg6EhkbQ.user.46.165.242.75.POSTED!not-for-mail From: Simon Wright Newsgroups: comp.lang.ada Subject: Discriminant problem Date: Sun, 29 Aug 2021 19:51:57 +0100 Organization: Aioe.org NNTP Server Message-ID: Mime-Version: 1.0 Content-Type: text/plain Injection-Info: gioia.aioe.org; logging-data="56256"; posting-host="RKN7TKnHC01q0gdg6EhkbQ.user.gioia.aioe.org"; mail-complaints-to="abuse@aioe.org"; User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (darwin) Cancel-Lock: sha1:stjVDgJppL2Th4n5nlrH6Kvsk8s= X-Notice: Filtered by postfilter v. 0.9.2 Xref: reader02.eternal-september.org comp.lang.ada:62577 List-Id: I have Location_Step.Node_Test := (Node_Test => Get_Node_Type_Test (T.Node_Type_Part.all), Name => Null_Unbounded_String); where type Location_Steps is record ... Node_Test : Node_Test_Specification := (Node_Test => No_Node_Test, Name => Null_Unbounded_String); ... end record; and type Node_Test_Specification (Node_Test : Node_Tests := No_Node_Test) is record Name : Unbounded_String; case Node_Test is ... end case; end record; Because of that function call in Node_Test => Get_Node_Type_Test (T.Node_Type_Part.all) the compiler says value for discriminant "Node_Test" must be static non-static function call (RM 4.9(6,18)) OK, I get that (tiresome though it is, and I'm amazed I've never come across it before), but how to approach it? I seem to be OK with case Get_Node_Type_Test (T.Node_Type_Part.all) is when Text_Node_Test => Location_Step.Node_Test := (Node_Test => Text_Node_Test, Name => Null_Unbounded_String); when ... end case; but this seems very ugly. I've only just noticed this: I'd been using -gnatX (so that I could use 'Image on records), which meant that the original code was OK (in the sense that it didn't raise any problems), but of course it's not portable even within the GNAT family. I think -gnat2020 might solve the issue too, but there's a bit of a skew between CE 2021 and GCC 11.