| ; Test that variables not starting with dollar sign get undefined after a | |
| ; CHECK-LABEL directive iff --enable-var-scope is used. | |
| ; Reference run: variables remain defined at all time when not using | |
| ; --enable-var-scope option. | |
| RUN: FileCheck --check-prefixes CHECK,CHECK-LOCAL-BOTH,CHECK-GLOBAL --input-file %s %s | |
| RUN: FileCheck --check-prefixes CHECK,CHECK-GLOBAL --enable-var-scope --input-file %s %s | |
| RUN: %ProtectFileCheckOutput not FileCheck --check-prefixes CHECK,CHECK-LOCAL-TEXT --enable-var-scope --input-file %s %s 2>&1 \ | |
| RUN: | FileCheck --implicit-check-not "undefined variable:" --check-prefixes ERRUNDEF,ERRUNDEF-LOCAL %s | |
| RUN: %ProtectFileCheckOutput not FileCheck --check-prefixes CHECK,CHECK-LOCAL-NUM --enable-var-scope --input-file %s %s 2>&1 \ | |
| RUN: | FileCheck --implicit-check-not "undefined variable:" --check-prefixes ERRUNDEF,ERRUNDEF-LOCNUM %s | |
| RUN: %ProtectFileCheckOutput not FileCheck --check-prefixes CHECK,CHECK-LOCAL-BOTH --enable-var-scope --input-file %s %s 2>&1 \ | |
| RUN: | FileCheck --implicit-check-not "undefined variable:" --check-prefixes ERRUNDEF,ERRUNDEF-LOCAL,ERRUNDEF-LOCNUM %s | |
| local1 | |
| global1 | |
| CHECK: [[LOCAL:loc[^[:digit:]]*]][[#LOCNUM:]] | |
| CHECK: [[$GLOBAL:glo[^[:digit:]]*]][[#$GLOBNUM:]] | |
| local2 | |
| global2 | |
| CHECK: [[LOCAL]][[#LOCNUM+1]] | |
| CHECK: [[$GLOBAL]][[#$GLOBNUM+1]] | |
| // Barrier to clear local variables | |
| barrier1: | |
| CHECK-LABEL: barrier1 | |
| local3 | |
| global3 | |
| CHECK-LOCAL-TEXT: [[LOCAL]]3 | |
| CHECK-LOCAL-NUM: local[[#LOCNUM+2]] | |
| CHECK-LOCAL-BOTH: [[LOCAL]][[#LOCNUM+2]] | |
| CHECK-GLOBAL: [[$GLOBAL]][[#$GLOBNUM+2]] | |
| // Barrier to continue FileCheck execution even after the first fail | |
| barrier2: | |
| CHECK-LABEL: barrier2 | |
| // Reassign the variables to check that clearing-after-reassigning works | |
| local4 | |
| global4 | |
| CHECK: [[LOCAL:loc[^[:digit:]]*]][[#LOCNUM:]] | |
| CHECK: [[$GLOBAL:glo[^[:digit:]]*]][[#$GLOBNUM:]] | |
| // Barrier to clear local variables | |
| barrier3: | |
| CHECK-LABEL: barrier3 | |
| local5 | |
| global5 | |
| CHECK-LOCAL-TEXT: [[LOCAL]]5 | |
| CHECK-LOCAL-NUM: local[[#LOCNUM+1]] | |
| CHECK-LOCAL-BOTH: [[LOCAL]][[#LOCNUM+1]] | |
| CHECK-GLOBAL: [[$GLOBAL]][[#$GLOBNUM+1]] | |
| // Check that the tests fail as expected | |
| ERRUNDEF-LOCAL: undefined variable: LOCAL | |
| ERRUNDEF-LOCNUM: undefined variable: LOCNUM | |
| ERRUNDEF-LOCAL: undefined variable: LOCAL | |
| ERRUNDEF-LOCNUM: undefined variable: LOCNUM | |
| // Look for "Input was:" to only match the error messages before the input-context. | |
| // | |
| // The regex /([[:space:]]|.)*/ matches all remaining characters, | |
| // to avoid fails due to --implicit-check-not | |
| ERRUNDEF: {{^Input was:([[:space:]]|.)*}} |