llvm-project/llvm/test/FileCheck/empty-variable-name.txt
Daniil Kovalev 3105cfe783
[FileCheck] Fix parsing empty global and pseudo variable names (#83667)
Reland #82595 with fixes of build failures related to colored output.
See https://lab.llvm.org/buildbot/#/builders/139/builds/60549
Use `%ProtectFileCheckOutput` to avoid colored output.
Original commit message below.

In `Pattern::parseVariable`, for global variables (those starting with '$')
and for pseudo variables (those starting with '@') the first character is
consumed before actual variable name parsing. If the name is empty, it
leads to out-of-bound access to the corresponding `StringRef`.

This patch adds an if statement against the case described.
2024-03-05 11:20:16 +03:00

33 lines
1.2 KiB
Plaintext

a
; RUN: %ProtectFileCheckOutput not FileCheck -input-file %s %s 2>&1 | \
; RUN: FileCheck -check-prefix CHECK-ERROR -DDIR=%S \
; RUN: --match-full-lines --strict-whitespace %s
; CHECK: a[[]]
; CHECK-ERROR:[[DIR]]{{/|\\}}empty-variable-name.txt:7:13: error: empty variable name
; CHECK-ERROR-NEXT:; CHECK: a{{\[\[\]\]}}
; CHECK-ERROR-NEXT: ^
b
; RUN: %ProtectFileCheckOutput not FileCheck -input-file %s -check-prefix CHECK-PSEUDO %s 2>&1 | \
; RUN: FileCheck -check-prefix CHECK-ERROR-PSEUDO -DDIR=%S \
; RUN: --match-full-lines --strict-whitespace %s
; CHECK-PSEUDO: b[[@]]
; CHECK-ERROR-PSEUDO:[[DIR]]{{/|\\}}empty-variable-name.txt:18:21: error: empty pseudo variable name
; CHECK-ERROR-PSEUDO-NEXT:; CHECK-PSEUDO: b{{\[\[@\]\]}}
; CHECK-ERROR-PSEUDO-NEXT: ^
c
; RUN: %ProtectFileCheckOutput not FileCheck -input-file %s -check-prefix CHECK-GLOBAL %s 2>&1 | \
; RUN: FileCheck -check-prefix CHECK-ERROR-GLOBAL -DDIR=%S \
; RUN: --match-full-lines --strict-whitespace %s
; CHECK-GLOBAL: c[[$]]
; CHECK-ERROR-GLOBAL:[[DIR]]{{/|\\}}empty-variable-name.txt:29:21: error: empty global variable name
; CHECK-ERROR-GLOBAL-NEXT:; CHECK-GLOBAL: c{{\[\[\$\]\]}}
; CHECK-ERROR-GLOBAL-NEXT: ^