[flang] Accept useless label on top-level FUNCTION (#129603)

The look-ahead parser for function program units didn't allow for a
useless label on the statement.

Fixes https://github.com/llvm/llvm-project/issues/129456.
This commit is contained in:
Peter Klausler
2025-03-10 13:16:09 -07:00
committed by GitHub
parent 68e3c02285
commit e2733c82bd
2 changed files with 8 additions and 1 deletions

View File

@@ -64,7 +64,7 @@ static constexpr auto programUnit{
construct<ProgramUnit>(indirect(subroutineSubprogram)) ||
construct<ProgramUnit>(indirect(Parser<Submodule>{})) ||
construct<ProgramUnit>(indirect(Parser<BlockData>{})) ||
lookAhead(validFunctionStmt) >>
lookAhead(maybe(label) >> validFunctionStmt) >>
construct<ProgramUnit>(indirect(functionSubprogram)) ||
construct<ProgramUnit>(indirect(Parser<MainProgram>{}))};
static constexpr auto normalProgramUnit{StartNewSubprogram{} >> programUnit /

View File

@@ -0,0 +1,7 @@
! RUN: %flang_fc1 -fsyntax-only -pedantic %s 2>&1 | FileCheck --allow-empty %s
!CHECK-NOT: error:
1 function fun()
2 end function
3 write(6,*) "pass"
4 end