diff --git a/flang/lib/Parser/openmp-parsers.cpp b/flang/lib/Parser/openmp-parsers.cpp index eae4784169146..48f213794247d 100644 --- a/flang/lib/Parser/openmp-parsers.cpp +++ b/flang/lib/Parser/openmp-parsers.cpp @@ -634,18 +634,20 @@ TYPE_PARSER( // Declarative constructs TYPE_PARSER(startOmpLine >> - sourced(construct( - Parser{}) || - construct( - Parser{}) || - construct( - Parser{}) || - construct( - Parser{}) || - construct( - Parser{}) || - construct(Parser{})) / - endOmpLine) + withMessage("expected OpenMP construct"_err_en_US, + sourced(construct( + Parser{}) || + construct( + Parser{}) || + construct( + Parser{}) || + construct( + Parser{}) || + construct( + Parser{}) || + construct( + Parser{})) / + endOmpLine)) // Block Construct TYPE_PARSER(construct( @@ -681,17 +683,18 @@ TYPE_PARSER(construct( TYPE_CONTEXT_PARSER("OpenMP construct"_en_US, startOmpLine >> - first(construct(Parser{}), - construct(Parser{}), - construct(Parser{}), - // OpenMPBlockConstruct is attempted before - // OpenMPStandaloneConstruct to resolve !$OMP ORDERED - construct(Parser{}), - construct(Parser{}), - construct(Parser{}), - construct(Parser{}), - construct(Parser{}), - construct(Parser{}))) + withMessage("expected OpenMP construct"_err_en_US, + first(construct(Parser{}), + construct(Parser{}), + construct(Parser{}), + // OpenMPBlockConstruct is attempted before + // OpenMPStandaloneConstruct to resolve !$OMP ORDERED + construct(Parser{}), + construct(Parser{}), + construct(Parser{}), + construct(Parser{}), + construct(Parser{}), + construct(Parser{})))) // END OMP Block directives TYPE_PARSER( diff --git a/flang/test/Parser/OpenMP/fail-construct1.f90 b/flang/test/Parser/OpenMP/fail-construct1.f90 new file mode 100644 index 0000000000000..f0ee22125cee0 --- /dev/null +++ b/flang/test/Parser/OpenMP/fail-construct1.f90 @@ -0,0 +1,5 @@ +! RUN: not %flang_fc1 -fsyntax-only -fopenmp %s 2>&1 | FileCheck %s + +! CHECK: error: expected OpenMP construct +!$omp parallel +end diff --git a/flang/test/Parser/OpenMP/fail-construct2.f90 b/flang/test/Parser/OpenMP/fail-construct2.f90 new file mode 100644 index 0000000000000..b7f5736d1329b --- /dev/null +++ b/flang/test/Parser/OpenMP/fail-construct2.f90 @@ -0,0 +1,5 @@ +! RUN: not %flang_fc1 -fsyntax-only -fopenmp %s 2>&1 | FileCheck %s + +! CHECK: error: expected OpenMP construct +!$omp dummy +end