17ff92082Speter klausler! RUN: %python %S/test_errors.py %s %flang_fc1 27ff92082Speter klausler! Miscellaneous constraint and requirement checking on intrinsics 37ff92082Speter klauslerprogram test_size 4c6ec6e30SPeter Klausler real :: scalar 57ff92082Speter klausler real, dimension(5, 5) :: array 6755180cfSPeter Klausler call test(array, array) 77ff92082Speter klausler contains 8755180cfSPeter Klausler subroutine test(arg, assumedRank) 97ff92082Speter klausler real, dimension(5, *) :: arg 10755180cfSPeter Klausler real, dimension(..) :: assumedRank 117ff92082Speter klausler !ERROR: A dim= argument is required for 'size' when the array is assumed-size 127ff92082Speter klausler print *, size(arg) 13*bf4a8763SPeter Klausler !ERROR: A dim= argument is required for 'ubound' when the array is assumed-size 147ff92082Speter klausler print *, ubound(arg) 157ff92082Speter klausler !ERROR: The 'source=' argument to the intrinsic function 'shape' may not be assumed-size 167ff92082Speter klausler print *, shape(arg) 172107fe38SPeter Klausler !ERROR: The 'harvest=' argument to the intrinsic procedure 'random_number' may not be assumed-size 182107fe38SPeter Klausler call random_number(arg) 19*bf4a8763SPeter Klausler !ERROR: 'array=' argument has unacceptable rank 0 20c6ec6e30SPeter Klausler print *, lbound(scalar) 21c6ec6e30SPeter Klausler !ERROR: 'array=' argument has unacceptable rank 0 22c6ec6e30SPeter Klausler print *, size(scalar) 23*bf4a8763SPeter Klausler !ERROR: 'array=' argument has unacceptable rank 0 24c6ec6e30SPeter Klausler print *, ubound(scalar) 25221ba64eSPeter Klausler !ERROR: DIM=0 dimension must be positive 26221ba64eSPeter Klausler print *, lbound(arg, 0) 27221ba64eSPeter Klausler !ERROR: DIM=0 dimension must be positive 28221ba64eSPeter Klausler print *, lbound(assumedRank, 0) 29221ba64eSPeter Klausler !ERROR: DIM=666 dimension is too large for any array (maximum rank 15) 30221ba64eSPeter Klausler print *, lbound(assumedRank, 666) 31221ba64eSPeter Klausler !ERROR: DIM=0 dimension must be positive 32221ba64eSPeter Klausler print *, ubound(arg, 0) 33221ba64eSPeter Klausler !ERROR: DIM=2 dimension is out of range for rank-2 assumed-size array 34221ba64eSPeter Klausler print *, ubound(arg, 2) 35221ba64eSPeter Klausler !ERROR: DIM=0 dimension must be positive 36221ba64eSPeter Klausler print *, ubound(assumedRank, 0) 37221ba64eSPeter Klausler !ERROR: DIM=666 dimension is too large for any array (maximum rank 15) 38221ba64eSPeter Klausler print *, ubound(assumedRank, 666) 39755180cfSPeter Klausler select rank(assumedRank) 40755180cfSPeter Klausler rank(1) 41755180cfSPeter Klausler !ERROR: DIM=2 dimension is out of range for rank-1 array 42755180cfSPeter Klausler print *, lbound(assumedRank, dim=2) 43755180cfSPeter Klausler !ERROR: DIM=2 dimension is out of range for rank-1 array 44755180cfSPeter Klausler print *, ubound(assumedRank, dim=2) 454fed5959SPeter Klausler rank(*) 464fed5959SPeter Klausler !ERROR: A dim= argument is required for 'size' when the array is assumed-size 474fed5959SPeter Klausler print *, size(assumedRank) 48*bf4a8763SPeter Klausler !ERROR: A dim= argument is required for 'ubound' when the array is assumed-size 494fed5959SPeter Klausler print *, ubound(assumedRank) 504fed5959SPeter Klausler !ERROR: The 'source=' argument to the intrinsic function 'shape' may not be assumed-size 514fed5959SPeter Klausler print *, shape(assumedRank) 524fed5959SPeter Klausler !ERROR: The 'harvest=' argument to the intrinsic procedure 'random_number' may not be assumed-size 534fed5959SPeter Klausler call random_number(assumedRank) 544fed5959SPeter Klausler !ERROR: DIM=0 dimension must be positive 554fed5959SPeter Klausler print *, lbound(assumedRank, 0) 564fed5959SPeter Klausler !ERROR: DIM=0 dimension must be positive 574fed5959SPeter Klausler print *, ubound(assumedRank, 0) 584fed5959SPeter Klausler !ERROR: DIM=1 dimension is out of range for rank-1 assumed-size array 594fed5959SPeter Klausler print *, ubound(assumedRank, 1) 604fed5959SPeter Klausler !ERROR: DIM=2 dimension is out of range for rank-1 array 614fed5959SPeter Klausler print *, lbound(assumedRank, dim=2) 624fed5959SPeter Klausler !ERROR: DIM=2 dimension is out of range for rank-1 array 634fed5959SPeter Klausler print *, ubound(assumedRank, dim=2) 64755180cfSPeter Klausler end select 657ff92082Speter klausler ! But these cases are fine: 667ff92082Speter klausler print *, size(arg, dim=1) 677ff92082Speter klausler print *, ubound(arg, dim=1) 687ff92082Speter klausler print *, lbound(arg) 697ff92082Speter klausler print *, size(array) 707ff92082Speter klausler print *, ubound(array) 717ff92082Speter klausler print *, lbound(array) 72b6fce8b9SPeter Klausler print *, size(arg(:,1)) 73b6fce8b9SPeter Klausler print *, ubound(arg(:,1)) 74c6ec6e30SPeter Klausler print *, shape(scalar) 75b6fce8b9SPeter Klausler print *, shape(arg(:,1)) 76755180cfSPeter Klausler print *, lbound(assumedRank, dim=2) ! can't check until run time 77755180cfSPeter Klausler print *, ubound(assumedRank, dim=2) 78755180cfSPeter Klausler select rank(assumedRank) 79755180cfSPeter Klausler rank(3) 80755180cfSPeter Klausler print *, lbound(assumedRank, dim=2) 81755180cfSPeter Klausler print *, ubound(assumedRank, dim=2) 824fed5959SPeter Klausler rank(*) 834fed5959SPeter Klausler print *, lbound(assumedRank, dim=1) 84755180cfSPeter Klausler rank default 85755180cfSPeter Klausler print *, lbound(assumedRank, dim=2) 86755180cfSPeter Klausler print *, ubound(assumedRank, dim=2) 87755180cfSPeter Klausler end select 887ff92082Speter klausler end subroutine 897ff92082Speter klauslerend 90