
This matches what MS rc.exe allows in practice. I'm not aware of any legal syntax case that are broken by allowing dashes as part of what the tokenizer considers an Identifier - but I'm not very well versed in the RC syntax either, can @amccarth think of any case that would be broken by this? This fixes downstream bug https://github.com/msys2/MINGW-packages/issues/9180. Additionally, rc.exe allows such resource name strings to be surrounded by quotes, ending up with e.g. Resource name (string): "QUOTEDNAME" (i.e., the quotes end up as part of the string), which llvm-rc doesn't support yet either. (I'm not aware of such cases in the wild though, but resource string names with dashes do exist.) This also allows including files with unquoted paths, with filenames containing dashes (which fixes https://github.com/msys2/MINGW-packages/issues/9130, which has been worked around differently so far). Differential Revision: https://reviews.llvm.org/D106598
48 lines
1.6 KiB
Plaintext
48 lines
1.6 KiB
Plaintext
; RUN: not llvm-rc -no-preprocess /V /FO %t.res -- %p/Inputs/tokens.rc | FileCheck %s
|
|
; llvm-rc fails now on this sample because it is an invalid resource file
|
|
; script. We silence the error message and just analyze the output.
|
|
|
|
; CHECK: Int: 1; int value = 1
|
|
; CHECK-NEXT: Plus: +
|
|
; CHECK-NEXT: Int: 2; int value = 2
|
|
; CHECK-NEXT: Minus: -
|
|
; CHECK-NEXT: Int: 3214L; int value = 3214
|
|
; CHECK-NEXT: Amp: &
|
|
; CHECK-NEXT: Int: 0x120894; int value = 1181844
|
|
; CHECK-NEXT: Int: 032173; int value = 13435
|
|
; CHECK-NEXT: Int: 2; int value = 2
|
|
; CHECK-NEXT: Pipe: |
|
|
; CHECK-NEXT: Amp: &
|
|
; CHECK-NEXT: Tilde: ~
|
|
; CHECK-NEXT: Plus: +
|
|
; CHECK-NEXT: LeftParen: (
|
|
; CHECK-NEXT: Minus: -
|
|
; CHECK-NEXT: Int: 7; int value = 7
|
|
; CHECK-NEXT: RightParen: )
|
|
; CHECK-NEXT: BlockBegin: {
|
|
; CHECK-NEXT: Int: 0xabcdef; int value = 11259375
|
|
; CHECK-NEXT: Int: 0xABCDEFl; int value = 11259375
|
|
; CHECK-NEXT: BlockEnd: }
|
|
; CHECK-NEXT: BlockBegin: Begin
|
|
; CHECK-NEXT: BlockEnd: End
|
|
; CHECK-NEXT: Identifier: He11o
|
|
; CHECK-NEXT: Identifier: LLVM
|
|
; CHECK-NEXT: Identifier: identifier-with-dashes
|
|
; CHECK-NEXT: String: "RC string test."
|
|
; CHECK-NEXT: Comma: ,
|
|
; CHECK-NEXT: String: L"Another RC string test.'&{"
|
|
; CHECK-NEXT: Comma: ,
|
|
; CHECK-NEXT: Int: 42; int value = 42
|
|
; CHECK-NEXT: Comma: ,
|
|
; CHECK-NEXT: Int: 100; int value = 100
|
|
; CHECK-NEXT: Identifier: Block
|
|
; CHECK-NEXT: Identifier: Comment
|
|
; CHECK-NEXT: Identifier: Ident
|
|
; CHECK-NEXT: Identifier: ifier
|
|
; CHECK-NEXT: Identifier: Line
|
|
; CHECK-NEXT: Identifier: Comment
|
|
; CHECK-NEXT: Identifier: Multiple
|
|
; CHECK-NEXT: Identifier: on
|
|
; CHECK-NEXT: Identifier: single
|
|
; CHECK-NEXT: String: ":))"
|