Files
swift-mirror/test/Syntax/tokens_unknown_and_invalid.swift
Saleem Abdulrasool 93e610920f test: port Syntax test to Windows
Replace the inline sed commands with sed scripts to avoid the subshells
on Windows.  Additionally, the unicode handling on Windows causes
problems and using the scripts circumvents that problem.

Implement an inline dos2unix as the BSD sed does not support `-b` and on
Windows, sed will convert the line endings.
2019-01-15 15:37:55 -08:00

90 lines
2.6 KiB
Swift

// To embed test byte sequence,
// this source replace marker to byte sequence first in runtime.
// Marker(N) have `ZN` style format. Z is Z, N is number.
// Byte sequence is represented in escape sequence.
// To avoid replace marker in sed command by sed itself,
// marker is also represented in escape sequence.
// RUN: cat %s | sed -f %S/Inputs/invalid.sed > %t
// RUN: %{python} -c "import sys; t = open(sys.argv[1], 'rb').read().replace('\r\n', '\n'); open(sys.argv[1], 'wb').write(t)" %t
// RUN: %swift-syntax-test -input-source-filename %t -dump-full-tokens 2>&1 | %FileCheck %t
// RUN: %round-trip-syntax-test --swift-syntax-test %swift-syntax-test --file %t
aaa
Z1 bbb Z1
ccc Z2
ddd Z2Z2Z2Z2
eee Z3Z3
fff Z3hello worldZ4
ggg Z4
hhh
Z5 iii Z5
jjj
// Diagnostics
// CHECK: 14:1: error: invalid UTF-8 found in source file
// CHECK: 14:7: error: invalid UTF-8 found in source file
// CHECK: 16:5: error: an identifier cannot begin with this character
// CHECK: 18:5: error: an identifier cannot begin with this character
// CHECK: 20:5: error: unicode curly quote found
// CHECK: 20:8: error: unicode curly quote found
// CHECK: 22:19: error: unicode curly quote found
// CHECK: 22:5: error: unicode curly quote found
// CHECK: 24:5: error: unicode curly quote found
// CHECK: 27:1: error: invalid character in source file
// CHECK: 27:9: error: invalid character in source file
// Checks around bbb
// CHECK-LABEL: 14:3
// CHECK-NEXT: (Token identifier
// CHECK-NEXT: (trivia newline 1)
// CHECK-NEXT: (trivia garbageText \302)
// CHECK-NEXT: (trivia space 1)
// CHECK-NEXT: (text="bbb")
// CHECK-NEXT: (trivia space 1)
// CHECK-NEXT: (trivia garbageText \302))
// Checks around ccc
// CHECK-LABEL: 16:5
// CHECK-NEXT: (Token unknown
// CHECK-NEXT: (text="\xCC\x82"))
// Checks around ddd
// CHECK-LABEL: 18:5
// CHECK-NEXT: (Token unknown
// CHECK-NEXT: (text="\xCC\x82\xCC\x82\xCC\x82\xCC\x82"))
// Checks around eee
// CHECK-LABEL: 20:5
// CHECK-NEXT: (Token unknown
// CHECK-NEXT: (text="\xE2\x80\x9C"))
// CHECK-LABEL: 20:8
// CHECK-NEXT: (Token unknown
// CHECK-NEXT: (text="\xE2\x80\x9C"))
// Checks around fff
// CHECK-LABEL: 22:5
// CHECK-NEXT: (Token unknown
// CHECK-NEXT: (text="\xE2\x80\x9Chello world\xE2\x80\x9D"))
// Checks around ggg
// CHECK-LABEL: 24:5
// CHECK-NEXT: (Token unknown
// CHECK-NEXT: (text="\xE2\x80\x9D"))
// Checks around iii
// CHECK-LABEL: 27:5
// CHECK-NEXT: (Token identifier
// CHECK-NEXT: (trivia newline 1)
// CHECK-NEXT: (trivia garbageText \341\232\200)
// CHECK-NEXT: (trivia space 1)
// CHECK-NEXT: (text="iii")
// CHECK-NEXT: (trivia space 1)
// CHECK-NEXT: (trivia garbageText \341\232\200))