https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111477
Damian Rouson <damian at archaeologic dot codes> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |damian at archaeologic dot codes --- Comment #1 from Damian Rouson <damian at archaeologic dot codes> --- This is a feature that was added in the Fortran 2008 standard as I believe the introduction of the standard states, but I'm having a hard time tracking down the relevant language in the standard. If I recall correctly, the Fortran 2008 standard neglected to mention in the Introduction that this feature was added. Then somewhere in the 2018 (or maybe the 2023 standard), there's a list of features that were added in previous standards but not mentioned in the introduction to those previous standards. I just isolated the reproducer below and then realized it's probably redundant with the one already posted in the initial bug report. % gfortran --version GNU Fortran (Homebrew GCC 14.2.0_1) 14.2.0 % gfortran all.F90 all.F90:35:22: 35 | test_description = test_description_t(do_something) | 1 Error: Component 'test_function_' at (1) is a PRIVATE component of 'test_description_t' % cat all.F90 module julienne_test_description_m implicit none private public :: test_description_t abstract interface function test_function_i() result(passed) implicit none logical passed end function end interface type test_description_t private procedure(test_function_i), pointer, nopass :: test_function_ => null() end type interface test_description_t module procedure construct_from_character_and_test_function end interface contains function construct_from_character_and_test_function(test_function) result(test_description) procedure(test_function_i), intent(in), pointer :: test_function type(test_description_t) test_description test_description%test_function_ => test_function end function end module program gfortran_reproducer use julienne_test_description_m implicit none type(test_description_t) test_description test_description = test_description_t(do_something) contains logical function do_something() do_something = .false. end function end program