1RUN: FileCheck -D#VAR1=11 --input-file %s %s
2
3; We use CHECK-NEXT directives to force a match on all lines with digits.
4
5; Numeric expressions using variables defined on the command-line without
6; spaces
7USE NO SPC
811
912
1010
11CHECK-LABEL: USE NO SPC
12CHECK-NEXT: [[#VAR1]]
13CHECK-NEXT: [[#VAR1+1]]
14CHECK-NEXT: [[#VAR1-1]]
15
16; Numeric expressions using variables defined on the command-line in alternate
17; spacing
18USE ALT SPC
1911
2011
2112
2212
2312
2412
2510
2610
2710
2810
29CHECK-LABEL: USE ALT SPC
30CHECK-NEXT: [[# VAR1]]
31CHECK-NEXT: [[# VAR1 ]]
32CHECK-NEXT: [[# VAR1+1]]
33CHECK-NEXT: [[# VAR1 +1]]
34CHECK-NEXT: [[# VAR1 + 1]]
35CHECK-NEXT: [[# VAR1 + 1 ]]
36CHECK-NEXT: [[# VAR1-1]]
37CHECK-NEXT: [[# VAR1 -1]]
38CHECK-NEXT: [[# VAR1 - 1]]
39CHECK-NEXT: [[# VAR1 - 1 ]]
40
41; Numeric expressions using variables defined on the command-line and an
42; immediate interpreted as an unsigned value
43; Note: 9223372036854775819 = 0x8000000000000000 + 11
44;       9223372036854775808 = 0x8000000000000000
45USE UNSIGNED IMM
469223372036854775819
47CHECK-LABEL: USE UNSIGNED IMM
48CHECK-NEXT: [[#VAR1+9223372036854775808]]
49
50; Numeric expression using undefined variable
51RUN: not FileCheck --check-prefix UNDEF-USE --input-file %s %s 2>&1 \
52RUN:   | FileCheck --strict-whitespace --check-prefix UNDEF-USE-MSG %s
53
54UNDEF VAR USE
55UNDEFVAR: 11
56UNDEF-USE-LABEL: UNDEF VAR USE
57UNDEF-USE-NEXT: UNDEFVAR: [[#UNDEFVAR]]
58UNDEF-USE-MSG: numeric-expression.txt:[[#@LINE-1]]:30: error: using undefined numeric variable 'UNDEFVAR'
59UNDEF-USE-MSG-NEXT: {{U}}NDEF-USE-NEXT: UNDEFVAR: {{\[\[#UNDEFVAR\]\]}}
60UNDEF-USE-MSG-NEXT: {{^                             \^$}}
61
62; Numeric expression with unsupported operator
63RUN: not FileCheck -D#VAR1=11 --check-prefixes CHECK,INVAL-OP --input-file %s %s 2>&1 \
64RUN:   | FileCheck --strict-whitespace --check-prefix INVAL-OP-MSG %s
65
66INVALID OPERATOR
67VAR1*2: 22
68INVAL-OP-LABEL: INVALID OPERATOR
69INVAL-OP-NEXT: VAR1*2: [[#VAR1*2]]
70INVAL-OP-MSG: numeric-expression.txt:[[#@LINE-1]]:31: error: unsupported numeric operation '*'
71INVAL-OP-MSG-NEXT: {{I}}NVAL-OP-NEXT: VAR1*2: {{\[\[#VAR1\*2\]\]}}
72INVAL-OP-MSG-NEXT: {{^                              \^$}}
73
74; Name conflict between Numeric variable definition and string variable
75; definition
76RUN: not FileCheck -D#VAR1=11 -D#NUMVAR=42 --check-prefixes CONFLICT,CONFLICT1 --input-file %s %s 2>&1 \
77RUN:   | FileCheck --strict-whitespace --check-prefix CLI-INPUT-PAT-CONFLICT %s
78RUN: not FileCheck -D#VAR1=11 -D#NUMVAR=42 -DNUMVAR=foobar --check-prefix CONFLICT --input-file %s %s 2>&1 \
79RUN:   | FileCheck --strict-whitespace --check-prefix CLI-CLI-PAT-CONFLICT %s
80RUN: not FileCheck -D#VAR1=11 -DPATVAR=foobar -D#PATVAR=42 --check-prefix CONFLICT --input-file %s %s 2>&1 \
81RUN:   | FileCheck --strict-whitespace --check-prefix CLI-CLI-NUM-CONFLICT %s
82
83PATVAR NUMVAR CONFLICT
84foobar
85CONFLICT-LABEL: PATVAR NUMVAR CONFLICT
86CONFLICT1-NEXT: [[NUMVAR:foo.*]]
87CLI-INPUT-PAT-CONFLICT: numeric-expression.txt:[[#@LINE-1]]:19: error: numeric variable with name 'NUMVAR' already exists
88CLI-INPUT-PAT-CONFLICT-NEXT: {{C}}ONFLICT1-NEXT: {{\[\[NUMVAR:foo\.\*\]\]}}
89CLI-INPUT-PAT-CONFLICT-NEXT: {{^                  \^$}}
90CLI-CLI-PAT-CONFLICT: Global defines:3:19: error: numeric variable with name 'NUMVAR' already exists
91CLI-CLI-PAT-CONFLICT-NEXT: Global define #3: NUMVAR=foobar
92CLI-CLI-PAT-CONFLICT-NEXT: {{^                  \^$}}
93CLI-CLI-NUM-CONFLICT: Global defines:3:20: error: string variable with name 'PATVAR' already exists
94CLI-CLI-NUM-CONFLICT-NEXT: Global define #3: #PATVAR=42
95CLI-CLI-NUM-CONFLICT-NEXT: {{^                   \^$}}
96