blob: b65eddb6d16a003866aa50e7e6cb8478b6b9fb38 [file] [log] [blame]
; 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:]]|.)*}}