# Test step/next in presence of #line directives
# Copyright 2001, 2007
# Free Software Foundation, Inc.

# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

# We pretend that this file has been transformed by some other tool
# into step-line.c.


FUNCTION f1 (i : INTEGER);
  BEGIN
    i = f2 (i);
    i = f2 (i);
    RETURN (i);
  END

FUNCTION f2 (i : INTEGER);
  BEGIN
    VARIABLE j : INTEGER
    j = i;
    j = SUCC (j);
    j = j - i;
    RETURN (j);
  END

BEGIN
  VARIABLE i : INTEGER;;

END
