Subject: Re: bug#19809: 24.4; f90-beginning-of-subprogram wrong behavior with string continuation

From: Raul Laasner <[email-masked]>
Date: Wed, 11 Feb 2015 11:53:18 +0200

I don't think the standard requires the second '&', although it is
recommended. Moreover, GFortran permits its omission and so in practice
people sometimes write such code. In any case, I have realized that the
proposed modification leads to new problems because in principle one could
also have

  subroutine foo
    ! &
  end subroutine foo

or something as weird as

  subroutine foo
    ; &
  end subroutine foo

and it's probably not worth the effort to account for such unlikely cases.
If the function is used mainly interactively then it's immediately clear
anyway if it fails due to unusual coding style. (On a different subject, it
also fails if the subprogram ends with a bare 'end' not followed by a
keyword, also allowed by the standard.)

On Wed, Feb 11, 2015 at 3:27 AM, Glenn Morris <[email-masked]> wrote:

> Raul Laasner wrote:
>
> > The functions f90-beginning-of-subprogram and f90-end-of-subprogram do
> not
> > work correctly if the source file contains lines which begin with the
> > correct keywords but in fact belong to a continued string. For instance,
> in
> > the following,
> >
> > subroutine foo()
> >   print*, '&
> >        end subroutine foo'
> >   ! The cursor is here
> > end subroutine foo
>
> But that's not valid Fortran? Continued strings must use '&' at the
> start of the continued lines as well? Eg gfortran 4.8.2 says:
>
>     Warning: Missing '&' in continued character constant at (1)
>
> Ie, you must write
>
>    subroutine foo()
>      print*, '&
>           &end subroutine foo'
>    end subroutine foo
>
> in which case there isn't a problem.
>

-- 
Raul Laasner
Institute of Physics
University of Tartu
Ravila 14c, 50411, Estonia
e-mail: [email-masked]