xref: /llvm-project/flang/test/Semantics/lockstmt02.f90 (revision fccff3f11a7d23bd28b6d92b6ae3f9d33633734a)
1*fccff3f1SKatherine Rasmussen! RUN: %python %S/test_errors.py %s %flang_fc1
2*fccff3f1SKatherine Rasmussen! This test checks for semantic errors in lock statements based on the
3*fccff3f1SKatherine Rasmussen! statement specification in section 11.6.10 of the Fortran 2018 standard.
4*fccff3f1SKatherine Rasmussen
5*fccff3f1SKatherine Rasmussenprogram test_lock_stmt
6*fccff3f1SKatherine Rasmussen  use iso_fortran_env, only: lock_type
7*fccff3f1SKatherine Rasmussen  implicit none
8*fccff3f1SKatherine Rasmussen
9*fccff3f1SKatherine Rasmussen  character(len=128) error_message
10*fccff3f1SKatherine Rasmussen  integer status
11*fccff3f1SKatherine Rasmussen  logical bool
12*fccff3f1SKatherine Rasmussen  type(lock_type) :: lock_var[*]
13*fccff3f1SKatherine Rasmussen
14*fccff3f1SKatherine Rasmussen  !___ non-standard-conforming statements ___
15*fccff3f1SKatherine Rasmussen
16*fccff3f1SKatherine Rasmussen! missing required lock-variable
17*fccff3f1SKatherine Rasmussen
18*fccff3f1SKatherine Rasmussen  !ERROR: expected '('
19*fccff3f1SKatherine Rasmussen  lock
20*fccff3f1SKatherine Rasmussen
21*fccff3f1SKatherine Rasmussen  !ERROR: expected '='
22*fccff3f1SKatherine Rasmussen  lock()
23*fccff3f1SKatherine Rasmussen
24*fccff3f1SKatherine Rasmussen  !ERROR: expected ')'
25*fccff3f1SKatherine Rasmussen  lock(acquired_lock=bool)
26*fccff3f1SKatherine Rasmussen
27*fccff3f1SKatherine Rasmussen  !ERROR: expected ')'
28*fccff3f1SKatherine Rasmussen  lock(stat=status)
29*fccff3f1SKatherine Rasmussen
30*fccff3f1SKatherine Rasmussen  !ERROR: expected ')'
31*fccff3f1SKatherine Rasmussen  lock(errmsg=error_message)
32*fccff3f1SKatherine Rasmussen
33*fccff3f1SKatherine Rasmussen! specifiers in lock-stat-list are not variables
34*fccff3f1SKatherine Rasmussen
35*fccff3f1SKatherine Rasmussen  !ERROR: expected ')'
36*fccff3f1SKatherine Rasmussen  lock(lock_var, acquired_lock=.true.)
37*fccff3f1SKatherine Rasmussen
38*fccff3f1SKatherine Rasmussen  !ERROR: expected ')'
39*fccff3f1SKatherine Rasmussen  lock(lock_var, stat=1)
40*fccff3f1SKatherine Rasmussen
41*fccff3f1SKatherine Rasmussen  !ERROR: expected ')'
42*fccff3f1SKatherine Rasmussen  lock(lock_var, errmsg='c')
43*fccff3f1SKatherine Rasmussen
44*fccff3f1SKatherine Rasmussen! specifier typos
45*fccff3f1SKatherine Rasmussen
46*fccff3f1SKatherine Rasmussen  !ERROR: expected ')'
47*fccff3f1SKatherine Rasmussen  lock(lock_var, acquiredlock=bool, stat=status, errmsg=error_message)
48*fccff3f1SKatherine Rasmussen
49*fccff3f1SKatherine Rasmussen  !ERROR: expected ')'
50*fccff3f1SKatherine Rasmussen  lock(lock_var, acquired_lock=bool, status=status, errmsg=error_message)
51*fccff3f1SKatherine Rasmussen
52*fccff3f1SKatherine Rasmussen  !ERROR: expected ')'
53*fccff3f1SKatherine Rasmussen  lock(lock_var, acquired_lock=bool, stat=status, errormsg=error_message)
54*fccff3f1SKatherine Rasmussen
55*fccff3f1SKatherine Rasmussenend program test_lock_stmt
56