<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
</head>
<body>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText"><br>
  Adrian,<br>
<br>
  I goggled a bit but couldn't understand anything I found. My guess is that <br>
<br>
type(*) <br>
<br>
doesn't work for certain derived types (why not?) perhaps those that contain procedures. If I remove the procedure from the
<br>
routine it all compiles, thus producing some evidence my theory is correct.<br>
<br>
  So we have a problem. The type checking one user wants is causing another users code to not build.<br>
<br>
  Here is a short term fix you can do.  After you run ./configure edit $PETSC_ARCH/include/petscconf.h locate<br>
<br>
#ifndef PETSC_HAVE_FORTRAN_TYPE_STAR<br>
#define PETSC_HAVE_FORTRAN_TYPE_STAR 1<br>
#endif<br>
<br>
then run make. This will turn off the type checking for all routines that have type(*) arguments which includes SNESSetConvergenceTest<br>
<br>
  I don't have a good long term solution at the moment. Maybe a Fortran expert has some idea.<br>
<br>
   Barry<br>
<br>
<br>
</div>
</span></font></div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText"><br>
<br>
<br>
<br>
<br>
> On Oct 18, 2018, at 10:14 PM, Adrian Croucher <a.croucher@auckland.ac.nz> wrote:<br>
> <br>
> hi Barry,<br>
> <br>
> On 18/10/18 11:34 AM, Smith, Barry F. wrote:<br>
>>    Sorry about this problem. I think the change was only introduced in master and should not affect 3.10.x Please confirm that master is where the failed compile is?<br>
> <br>
> Yes, it's on master. I have tracked down the commit at which it started to fail: 6f222c9d1e, "type checking for Fortran" (Fri Sep 28).<br>
> <br>
>>    Please send us the calling sequence of your routine that won't compile (cut and paste).<br>
> <br>
> I've attached a minimal example program which fails with the following error:<br>
> <br>
>    call SNESSetConvergenceTest(snes, convergence, context, &<br>
>                                                  1<br>
> Error: Actual argument at (1) to assumed-type dummy is of derived type with type-bound or FINAL procedures<br>
> <br>
> Cheers, Adrian<br>
> <br>
>>> On Oct 17, 2018, at 5:21 PM, Adrian Croucher <a.croucher@auckland.ac.nz> wrote:<br>
>>> <br>
>>> hi<br>
>>> <br>
>>> A colleague has just reported that my code no longer builds with PETSc 3.10.2, though it builds OK with 3.10.1.<br>
>>> <br>
>>> The problem appears to be the Fortran interface to SNESSetConvergenceTest(), which was changed at commit f9a1a4d.<br>
>>> <br>
>>> It now complains about the context argument we are passing in to this function ('cctx' in the interface, which is declared there as type(*)). The error is:<br>
>>> <br>
>>> "Error: Actual argument at (1) to assumed-type dummy is of derived type with type-bound or FINAL procedures"<br>
>>> <br>
>>> This is true, the argument being passed in is of derived type with type-bound procedures. Previously this didn't bother it, but it looks like it does now.<br>
>>> <br>
>>> Is its complaint legitimate? or perhaps a compiler bug? (this is using gcc 6.3.0)<br>
>>> <br>
>>> - Adrian<br>
>>> <br>
> -- <br>
> Dr Adrian Croucher<br>
> Senior Research Fellow<br>
> Department of Engineering Science<br>
> University of Auckland, New Zealand<br>
> email: a.croucher@auckland.ac.nz<br>
> tel: +64 (0)9 923 4611<br>
> <br>
> <test_snes.F90><br>
<br>
</div>
</span></font></div>
</body>
</html>