mirror of
https://github.com/intel/llvm.git
synced 2026-01-21 12:19:23 +08:00
[flang][openacc][NFC] Issue better error message when directive is wrong (#69034)
This commit is contained in:
committed by
GitHub
parent
144c5b6d58
commit
6ade518323
@@ -150,11 +150,12 @@ TYPE_PARSER(sourced(construct<AccLoopDirective>(
|
||||
TYPE_PARSER(construct<AccBeginLoopDirective>(
|
||||
sourced(Parser<AccLoopDirective>{}), Parser<AccClauseList>{}))
|
||||
|
||||
TYPE_PARSER(construct<AccEndLoop>(startAccLine >> "END LOOP"_tok))
|
||||
TYPE_PARSER(construct<AccEndLoop>("END LOOP"_tok))
|
||||
|
||||
TYPE_PARSER(construct<OpenACCLoopConstruct>(
|
||||
sourced(Parser<AccBeginLoopDirective>{} / endAccLine),
|
||||
maybe(Parser<DoConstruct>{}), maybe(Parser<AccEndLoop>{} / endAccLine)))
|
||||
maybe(Parser<DoConstruct>{}),
|
||||
maybe(startAccLine >> Parser<AccEndLoop>{} / endAccLine)))
|
||||
|
||||
// 2.15.1 Routine directive
|
||||
TYPE_PARSER(sourced(construct<OpenACCRoutineConstruct>(verbatim("ROUTINE"_tok),
|
||||
@@ -227,22 +228,25 @@ TYPE_PARSER(construct<OpenACCStandaloneConstruct>(
|
||||
TYPE_PARSER(construct<OpenACCStandaloneDeclarativeConstruct>(
|
||||
sourced(Parser<AccDeclarativeDirective>{}), Parser<AccClauseList>{}))
|
||||
|
||||
TYPE_PARSER(
|
||||
startAccLine >> first(sourced(construct<OpenACCDeclarativeConstruct>(
|
||||
Parser<OpenACCStandaloneDeclarativeConstruct>{})),
|
||||
sourced(construct<OpenACCDeclarativeConstruct>(
|
||||
Parser<OpenACCRoutineConstruct>{}))))
|
||||
TYPE_PARSER(startAccLine >>
|
||||
withMessage("expected OpenACC directive"_err_en_US,
|
||||
first(sourced(construct<OpenACCDeclarativeConstruct>(
|
||||
Parser<OpenACCStandaloneDeclarativeConstruct>{})),
|
||||
sourced(construct<OpenACCDeclarativeConstruct>(
|
||||
Parser<OpenACCRoutineConstruct>{})))))
|
||||
|
||||
// OpenACC constructs
|
||||
TYPE_CONTEXT_PARSER("OpenACC construct"_en_US,
|
||||
startAccLine >>
|
||||
first(construct<OpenACCConstruct>(Parser<OpenACCBlockConstruct>{}),
|
||||
construct<OpenACCConstruct>(Parser<OpenACCCombinedConstruct>{}),
|
||||
construct<OpenACCConstruct>(Parser<OpenACCLoopConstruct>{}),
|
||||
construct<OpenACCConstruct>(Parser<OpenACCStandaloneConstruct>{}),
|
||||
construct<OpenACCConstruct>(Parser<OpenACCCacheConstruct>{}),
|
||||
construct<OpenACCConstruct>(Parser<OpenACCWaitConstruct>{}),
|
||||
construct<OpenACCConstruct>(Parser<OpenACCAtomicConstruct>{})))
|
||||
withMessage("expected OpenACC directive"_err_en_US,
|
||||
first(construct<OpenACCConstruct>(Parser<OpenACCBlockConstruct>{}),
|
||||
construct<OpenACCConstruct>(Parser<OpenACCCombinedConstruct>{}),
|
||||
construct<OpenACCConstruct>(Parser<OpenACCLoopConstruct>{}),
|
||||
construct<OpenACCConstruct>(
|
||||
Parser<OpenACCStandaloneConstruct>{}),
|
||||
construct<OpenACCConstruct>(Parser<OpenACCCacheConstruct>{}),
|
||||
construct<OpenACCConstruct>(Parser<OpenACCWaitConstruct>{}),
|
||||
construct<OpenACCConstruct>(Parser<OpenACCAtomicConstruct>{}))))
|
||||
|
||||
TYPE_PARSER(startAccLine >>
|
||||
sourced(construct<AccEndCombinedDirective>(sourced("END"_tok >>
|
||||
|
||||
15
flang/test/Semantics/OpenACC/acc-error.f90
Normal file
15
flang/test/Semantics/OpenACC/acc-error.f90
Normal file
@@ -0,0 +1,15 @@
|
||||
! RUN: %python %S/../test_errors.py %s %flang -fopenacc
|
||||
|
||||
! Check parser specific error for OpenACC
|
||||
|
||||
|
||||
subroutine test(a, n)
|
||||
integer :: a(n)
|
||||
!ERROR: expected OpenACC directive
|
||||
!$acc p
|
||||
integer :: i,j
|
||||
|
||||
i = 0
|
||||
!ERROR: expected OpenACC directive
|
||||
!$acc p
|
||||
end subroutine
|
||||
Reference in New Issue
Block a user