xref: /llvm-project/flang/test/Evaluate/fold-substr.f90 (revision 8b13775d6a7c2b2f070fd32d320676ed5b19cbb2)
1bd859cb4SPeter Klausler! RUN: %python %S/test_folding.py %s %flang_fc1
2bd859cb4SPeter Klausler! Test folding of substrings
3bd859cb4SPeter Klauslermodule m
4bd859cb4SPeter Klausler  logical, parameter :: test_01a = "abc"(1:3) == "abc"
5bd859cb4SPeter Klausler  logical, parameter :: test_01b = len("abc"(1:3)) == 3
6bd859cb4SPeter Klausler  logical, parameter :: test_02a = "abc"(-1:-2) == ""
7bd859cb4SPeter Klausler  logical, parameter :: test_02b = len("abc"(-1:-2)) == 0
8bd859cb4SPeter Klausler  logical, parameter :: test_03a = "abc"(9999:4) == ""
9bd859cb4SPeter Klausler  logical, parameter :: test_03b = len("abc"(9999:4)) == 0
10bd859cb4SPeter Klausler  character(4), parameter :: ca(3) = ["abcd", "efgh", "ijkl"]
11bd859cb4SPeter Klausler  logical, parameter :: test_04a = ca(2)(2:4) == "fgh"
12bd859cb4SPeter Klausler  logical, parameter :: test_04b = len(ca(2)(2:4)) == 3
13bd859cb4SPeter Klausler  logical, parameter :: test_05a = all(ca(:)(2:4) == ["bcd", "fgh", "jkl"])
14bd859cb4SPeter Klausler  logical, parameter :: test_05b = len(ca(:)(2:4)) == 3
15bd859cb4SPeter Klausler  logical, parameter :: test_06a = ca(1)(1:2)//ca(2)(2:3)//ca(3)(3:4) == "abfgkl"
16bd859cb4SPeter Klausler  logical, parameter :: test_06b = len(ca(1)(1:2)//ca(2)(2:3)//ca(3)(3:4)) == 6
178fed620eSPeter Klausler  logical, parameter :: test_07a = ca(1)(:2) == "ab"
188fed620eSPeter Klausler  logical, parameter :: test_07b = ca(1)(3:) == "cd"
198fed620eSPeter Klausler  logical, parameter :: test_07c = ca(1)(:-1) == ""
208fed620eSPeter Klausler  logical, parameter :: test_07d = ca(1)(5:) == ""
218fed620eSPeter Klausler  logical, parameter :: test_07e = ca(1)(:) == "abcd"
22bd859cb4SPeter Klauslerend module
23*8b13775dSjeanPerier
24*8b13775dSjeanPeriersubroutine foo(x)
25*8b13775dSjeanPerier  character(4) :: x(:, :)
26*8b13775dSjeanPerier  logical, parameter :: test_01 = len(transpose(x(:, :)(:))) == 4
27*8b13775dSjeanPerier  logical, parameter :: test_02 = len(transpose(x(:, :)(1:2))) == 2
28*8b13775dSjeanPerier  logical, parameter :: test_03 = len(maxval(x(:, :)(:))) == 4
29*8b13775dSjeanPerier  logical, parameter :: test_04 = len(maxval(x(:, :)(1:2))) == 2
30*8b13775dSjeanPerierend subroutine
31