This is the mail archive of the fortran@gcc.gnu.org mailing list for the GNU Fortran project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [Patch, Fortran] SELECT TYPE with associate-name


Hi Janus!

Janus Weil wrote:
here is a patch that implements a small enhancement for the SELECT
TYPE construct, namely using an associate-name, as in:

SELECT TYPE ( x => ... )

The dots can be any CLASS-valued expression here, which makes it
possible to use arbitrary expressions as a selector, and not only
named variables.

What I do to accomplish this is basically: Use the associate-name 'x'
like an ordinary variable, except that it gets its type from the
selector expression, and insert an additional operation in front of
the SELECT block which does the assignment "x => ...".

The patch works fine on the attached test case and also makes
Salvatore's PSBLAS compile. It was regtested on
x86_64-unknown-linux-gnu with no failures.

Ok for trunk?

Ok after considering my comments below and when trunk reopens.


+	  else
+	    gfc_check_pointer_assign (code->expr1, code->expr2);

- gfc_check_pointer_assign (code->expr1, code->expr2);

Your Changelog here says you don't want to call check_pointer_assign for CLASS assignments; it confuses me a little that you do this as well as fix check_pointer_assign to correctly handle CLASS as well. But I guess that's alright and it is called sometimes with CLASS arguments anyways.

   /* Check for F03:C811.
      TODO: Change error message once ASSOCIATE is implemented.  */
-  if (expr->expr_type != EXPR_VARIABLE || expr->ref != NULL)
+  if (expr1->expr_type != EXPR_VARIABLE || expr1->ref != NULL)

That TODO is probably now void, isn't it? But you didn't change the error message, so maybe even not? Needs this further fixing?

Thanks for your patch!

Daniel

--
Done:  Arc-Bar-Cav-Ran-Rog-Sam-Tou-Val-Wiz
To go: Hea-Kni-Mon-Pri


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]