@robert1 ,
As I mentioned earlier, you may want to inquire with GCC/gfortran volunteers via GCC Bugzilla regarding the current implementation in gfortran of Fortran 2018 feature around implicit none (type, external). A workaround with gfortran can be implicit none (type) what may then retain what you view is provided by implicit none.
But yes, I agree with your discomfort. As I suggested earlier upthread, my recommendation will be to avoid working with implicit interfaces. You appear to seek certain convenience with your
make_func procedure but you’re introducing significant vulnerability in the process. Letting go of convenience for now and resorting to explicit instructions even if they appear verbose will be more in line with the current ethos of Fortran.