bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


From: Raul Laasner
Subject: bug#19809: 24.4; f90-beginning-of-subprogram wrong behavior with string continuation
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 <rgm@gnu.org> 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: raullaasner@gmail.com

reply via email to

[Prev in Thread] Current Thread [Next in Thread]