Skip to content

Replace end with end subroutine foo, end function foo, end program foo, end module foo as appropriate #111

Open
@Beliavsky

Description

@Beliavsky

I would like a bare end statement at the end of a subroutine, function, program, or module to be replaced by a statement with end followed by the name. For example, the linter leaves the code

module m
    implicit none
contains
    real function twice(x)
        real, intent(in) :: x
        twice = 2 * x
    end

    subroutine sub(x, y)
        implicit none
        real, intent(in) :: x
        real, intent(out) :: y
        y = 2 * x + 4.5
    end
end

program main
use m
implicit none
real :: x, y
x = 10.0
call sub(x, y)
print *, y
print *, twice(y)
end

I would like it to be changed to

module m
    implicit none
contains
    real function twice(x)
        real, intent(in) :: x
        twice = 2 * x
    end function twice

    subroutine sub(x, y)
        implicit none
        real, intent(in) :: x
        real, intent(out) :: y
        y = 2 * x + 4.5
    end subroutine sub
end module m

program main
use m
implicit none
real :: x, y
x = 10.0
call sub(x, y)
print *, y
print *, twice(y)
end program main

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions