1module m
2!$omp error asdf			! { dg-error "Failed to match clause" }
3!$omp error at				! { dg-error "Expected '\\(' after 'at'" }
4!$omp error at(				! { dg-error "Expected COMPILATION or EXECUTION in AT clause at" }
5!$omp error at(runtime)			! { dg-error "Expected COMPILATION or EXECUTION in AT clause at" }
6!$omp error at(+			! { dg-error "Expected COMPILATION or EXECUTION in AT clause at" }
7!$omp error at(compilation		! { dg-error "Expected COMPILATION or EXECUTION in AT clause at" }
8!$omp error severity			! { dg-error "Expected '\\(' after 'severity'" }
9!$omp error severity(			! { dg-error "Expected FATAL or WARNING in SEVERITY clause at" }
10!$omp error severity(error)		! { dg-error "Expected FATAL or WARNING in SEVERITY clause at" }
11!$omp error severity(-			! { dg-error "Expected FATAL or WARNING in SEVERITY clause at" }
12!$omp error severity(fatal		! { dg-error "Expected FATAL or WARNING in SEVERITY clause at" }
13!$omp error message			! { dg-error "Expected '\\(' after 'message'" }
14!$omp error message(			! { dg-error "Invalid expression after 'message\\('" }
15!$omp error message(0			! { dg-error "Invalid expression after 'message\\('" }
16!$omp error message("foo"		! { dg-error "Invalid expression after 'message\\('" }
17
18!$omp error at(compilation) at(compilation)	! { dg-error "Duplicated 'at' clause at" }
19!$omp error severity(fatal) severity(warning)	! { dg-error "Duplicated 'severity' clause at" }
20!$omp error message("foo") message("foo")	! { dg-error "Duplicated 'message' clause at" }
21!$omp error message("foo"),at(compilation),severity(fatal),asdf	! { dg-error "Failed to match clause" }
22
23!$omp error at(execution)			! { dg-error "Unexpected !.OMP ERROR statement in MODULE" }
24
25end module
26
27module m2
28character(len=10) :: msg
29!$omp error message(1)			! { dg-error "MESSAGE clause at .1. requires a scalar default-kind CHARACTER expression" }
30!$omp error message(1.2)		! { dg-error "MESSAGE clause at .1. requires a scalar default-kind CHARACTER expression" }
31!$omp error message(4_"foo")		! { dg-error "MESSAGE clause at .1. requires a scalar default-kind CHARACTER expression" }
32!$omp error message(["bar","bar"])	! { dg-error "MESSAGE clause at .1. requires a scalar default-kind CHARACTER expression" }
33!$omp error message(msg)		! { dg-error "Constant character expression required in MESSAGE clause" }
34
35type S
36  !$omp error at(execution) message("foo")! { dg-error "Unexpected !.OMP ERROR statement at" }
37  integer s
38end type
39end module
40
41subroutine bar
42character(len=10) :: msg
43!$omp error at(execution) message(1)			! { dg-error "MESSAGE clause at .1. requires a scalar default-kind CHARACTER expression" }
44!$omp error at(execution) message(1.2)			! { dg-error "MESSAGE clause at .1. requires a scalar default-kind CHARACTER expression" }
45!$omp error at(execution) message(4_"foo")		! { dg-error "MESSAGE clause at .1. requires a scalar default-kind CHARACTER expression" }
46!$omp error at(execution) message(["bar","bar"])	! { dg-error "MESSAGE clause at .1. requires a scalar default-kind CHARACTER expression" }
47!$omp error at(execution) message(msg)			! OK
48
49end
50
51integer function foo (i, x, msg)
52  integer :: i
53  logical :: x
54  character(len=*) :: msg
55  !$omp error message(msg)		! { dg-error "Constant character expression required in MESSAGE clause" }
56  if (x) then
57    !$omp error at(execution)		! OK
58  end if
59  i = i + 1
60  if (x) then
61    ;
62  else
63    !$omp error at(execution) severity(warning)	! OK
64  end if
65  i = i + 1
66  select case (.false.)
67    !$omp error severity(fatal) at(execution)	! { dg-error "Expected a CASE or END SELECT statement following SELECT CASE" }
68  end select
69  do while (.false.)
70    !$omp error at(execution)message("42 - 1")	! OK
71    i = i + 1
72  end do
7399  continue
74  !$omp error severity(warning) message("bar") at(execution)	! OK
75    i = i + 1
76  foo = i
77end
78
79
80subroutine foobar
81  if (.true.) &  ! { dg-error "Syntax error in IF-clause after" }
82    !$omp error at(execution)
83
84  continue
85
86  if (.true.) &  ! { dg-error "Syntax error in IF-clause after" }
87    !$omp error  ! { dg-error ".OMP ERROR encountered at" }
88end
89