| RUN: FileCheck --input-file %s %s |
| |
| ; We use CHECK-NEXT directives to force a match on all lines with digits. |
| |
| ; Numeric variable definition without spaces. |
| DEF NO SPC |
| 11 |
| CHECK-LABEL: DEF NO SPC |
| CHECK-NEXT: [[#VAR1:]] |
| |
| ; Numeric variable definition with different spacing. |
| DEF SPC |
| 11 |
| 11 |
| 11 |
| CHECK-LABEL: DEF SPC |
| CHECK-NEXT: [[# VAR1a:]] |
| CHECK-NEXT: [[# VAR1b :]] |
| CHECK-NEXT: [[# VAR1c : ]] |
| |
| ; Numeric expressions using variables defined on other lines without spaces. |
| USE NO SPC |
| 11 |
| 12 |
| 10 |
| 11 |
| 11 |
| 11 |
| CHECK-LABEL: USE |
| CHECK-NEXT: [[#VAR1]] |
| CHECK-NEXT: [[#VAR1+1]] |
| CHECK-NEXT: [[#VAR1-1]] |
| CHECK-NEXT: [[#VAR1a]] |
| CHECK-NEXT: [[#VAR1b]] |
| CHECK-NEXT: [[#VAR1c]] |
| |
| ; Numeric expressions using variables defined on other lines with different |
| ; spacing. |
| USE SPC |
| 11 |
| 11 |
| 12 |
| 12 |
| 12 |
| 12 |
| 10 |
| 10 |
| 10 |
| 10 |
| CHECK-LABEL: USE SPC |
| CHECK-NEXT: [[# VAR1]] |
| CHECK-NEXT: [[# VAR1 ]] |
| CHECK-NEXT: [[# VAR1+1]] |
| CHECK-NEXT: [[# VAR1 +1]] |
| CHECK-NEXT: [[# VAR1 + 1]] |
| CHECK-NEXT: [[# VAR1 + 1 ]] |
| CHECK-NEXT: [[# VAR1-1]] |
| CHECK-NEXT: [[# VAR1 -1]] |
| CHECK-NEXT: [[# VAR1 - 1]] |
| CHECK-NEXT: [[# VAR1 - 1 ]] |
| |
| ; Numeric expressions using variables defined on other lines and an immediate |
| ; interpreted as an unsigned value. |
| ; Note: 9223372036854775819 = 0x8000000000000000 + 11 |
| ; 9223372036854775808 = 0x8000000000000000 |
| USE UNSIGNED IMM |
| 9223372036854775819 |
| CHECK-LABEL: USE UNSIGNED IMM |
| CHECK-NEXT: [[#VAR1+9223372036854775808]] |
| |
| ; Numeric expressions using more than one variable defined on other lines. |
| USE MULTI VAR |
| 31 |
| 42 |
| CHECK-LABEL: USE MULTI VAR |
| CHECK-NEXT: [[#VAR2:]] |
| CHECK-NEXT: [[#VAR1+VAR2]] |
| |
| ; Numeric expression using undefined variables. |
| RUN: not FileCheck --check-prefix UNDEF-USE --input-file %s %s 2>&1 \ |
| RUN: | FileCheck --strict-whitespace --check-prefix UNDEF-USE-MSG %s |
| |
| UNDEF VAR USE |
| UNDEFVAR: 11 |
| UNDEF-USE-LABEL: UNDEF VAR USE |
| UNDEF-USE-NEXT: UNDEFVAR: [[#UNDEFVAR1+UNDEFVAR2]] |
| UNDEF-USE-MSG: numeric-expression.txt:[[#@LINE-1]]:17: error: {{U}}NDEF-USE-NEXT: expected string not found in input |
| UNDEF-USE-MSG-NEXT: {{U}}NDEF-USE-NEXT: UNDEFVAR: {{\[\[#UNDEFVAR1\+UNDEFVAR2\]\]}} |
| UNDEF-USE-MSG-NEXT: {{^ \^$}} |
| UNDEF-USE-MSG-NEXT: numeric-expression.txt:[[#@LINE-6]]:1: note: scanning from here |
| UNDEF-USE-MSG-NEXT: UNDEFVAR: 11 |
| UNDEF-USE-MSG-NEXT: {{^\^$}} |
| UNDEF-USE-MSG-NEXT: numeric-expression.txt:[[#@LINE-9]]:1: note: uses undefined variable(s): "UNDEFVAR1" "UNDEFVAR2" |
| UNDEF-USE-MSG-NEXT: UNDEFVAR: 11 |
| UNDEF-USE-MSG-NEXT: {{^\^$}} |
| |
| ; Numeric expression with unsupported operator. |
| RUN: not FileCheck -D#NUMVAR=10 --check-prefix INVAL-OP --input-file %s %s 2>&1 \ |
| RUN: | FileCheck --strict-whitespace --check-prefix INVAL-OP-MSG %s |
| |
| INVALID OPERATOR |
| NUMVAR*2: 22 |
| INVAL-OP-LABEL: INVALID OPERATOR |
| INVAL-OP-NEXT: NUMVAR*2: [[#NUMVAR*2]] |
| INVAL-OP-MSG: numeric-expression.txt:[[#@LINE-1]]:35: error: unsupported operation '*' |
| INVAL-OP-MSG-NEXT: {{I}}NVAL-OP-NEXT: NUMVAR*2: {{\[\[#NUMVAR\*2\]\]}} |
| INVAL-OP-MSG-NEXT: {{^ \^$}} |
| |
| ; Name conflict between Numeric variable definition and string variable |
| ; definition whether from the command-line or input text. |
| RUN: not FileCheck --check-prefixes CONFLICT,CONFLICT1,CONFLICT2 --input-file %s %s 2>&1 \ |
| RUN: | FileCheck --strict-whitespace --check-prefix INPUT-STR-CONFLICT %s |
| RUN: not FileCheck -D#NUMVAR=42 --check-prefixes CONFLICT,CONFLICT2 --input-file %s %s 2>&1 \ |
| RUN: | FileCheck --strict-whitespace --check-prefix INPUT-STR-CONFLICT %s |
| RUN: not FileCheck -D#NUMVAR=42 -DNUMVAR=foobar --check-prefix CONFLICT --input-file %s %s 2>&1 \ |
| RUN: | FileCheck --strict-whitespace --check-prefix CLI-STR-CONFLICT %s |
| RUN: not FileCheck --check-prefixes CONFLICT,CONFLICT3,CONFLICT4 --input-file %s %s 2>&1 \ |
| RUN: | FileCheck --strict-whitespace --check-prefix INPUT-NUM-CONFLICT %s |
| RUN: not FileCheck -DSTRVAR=foobar --check-prefixes CONFLICT,CONFLICT4 --input-file %s %s 2>&1 \ |
| RUN: | FileCheck --strict-whitespace --check-prefix INPUT-NUM-CONFLICT %s |
| RUN: not FileCheck -DSTRVAR=foobar -D#STRVAR=42 --check-prefix CONFLICT --input-file %s %s 2>&1 \ |
| RUN: | FileCheck --strict-whitespace --check-prefix CLI-NUM-CONFLICT %s |
| |
| STRVAR NUMVAR CONFLICT |
| redef1 42 |
| foobar |
| redef2 42 |
| CONFLICT-LABEL: STRVAR NUMVAR CONFLICT |
| CONFLICT1-NEXT: redef1 [[#NUMVAR:]] |
| CONFLICT2: [[NUMVAR:foo.*]] |
| CONFLICT3: [[STRVAR:foo.*]] |
| CONFLICT4: redef2 [[#STRVAR:]] |
| INPUT-STR-CONFLICT: numeric-expression.txt:[[#@LINE-3]]:14: error: numeric variable with name 'NUMVAR' already exists |
| INPUT-STR-CONFLICT-NEXT: {{C}}ONFLICT2: {{\[\[NUMVAR:foo\.\*\]\]}} |
| INPUT-STR-CONFLICT-NEXT: {{^ \^$}} |
| CLI-STR-CONFLICT: Global defines:2:19: error: numeric variable with name 'NUMVAR' already exists |
| CLI-STR-CONFLICT-NEXT: Global define #2: NUMVAR=foobar |
| CLI-STR-CONFLICT-NEXT: {{^ \^$}} |
| INPUT-NUM-CONFLICT: numeric-expression.txt:[[#@LINE-7]]:22: error: string variable with name 'STRVAR' already exists |
| INPUT-NUM-CONFLICT-NEXT: CONFLICT4: redef2 {{\[\[#STRVAR:\]\]}} |
| INPUT-NUM-CONFLICT-NEXT: {{^ \^$}} |
| CLI-NUM-CONFLICT: Global defines:2:20: error: string variable with name 'STRVAR' already exists |
| CLI-NUM-CONFLICT-NEXT: Global define #2: #STRVAR=42 |
| CLI-NUM-CONFLICT-NEXT: {{^ \^$}} |
| |
| ; Numeric variable definition with too big value. |
| RUN: not FileCheck --check-prefix BIGVAL --input-file %s %s 2>&1 \ |
| RUN: | FileCheck --strict-whitespace --check-prefix BIGVAL-MSG %s |
| |
| BIG VALUE |
| NUMVAR: 10000000000000000000000 |
| BIGVAL-LABEL: BIG VALUE |
| BIGVAL-NEXT: NUMVAR: [[#NUMVAR:]] |
| BIGVAL-MSG: numeric-expression.txt:[[#@LINE-3]]:9: error: Unable to represent numeric value |
| BIGVAL-MSG-NEXT: {{N}}UMVAR: 10000000000000000000000 |
| BIGVAL-MSG-NEXT: {{^ \^$}} |