about summary refs log tree commit diff
diff options
context:
space:
mode:
authorGrisha <33952698+GrishaVar@users.noreply.github.com>2022-03-16 06:37:41 +0100
committerGitHub <noreply@github.com>2022-03-16 06:37:41 +0100
commit4e3dbb3c19bb4059e30030e7c4be62e1d8919649 (patch)
treeff46927cb004d0be755458ae70141e1d4518b1b4
parentaf446e1d7086d4aeed495f6b03e70009e9424ce4 (diff)
downloadrust-4e3dbb3c19bb4059e30030e7c4be62e1d8919649.tar.gz
rust-4e3dbb3c19bb4059e30030e7c4be62e1d8919649.zip
Add test for >65535 hashes in lexing raw string
-rw-r--r--compiler/rustc_lexer/src/tests.rs17
1 files changed, 17 insertions, 0 deletions
diff --git a/compiler/rustc_lexer/src/tests.rs b/compiler/rustc_lexer/src/tests.rs
index 94017b7b286..548de67449a 100644
--- a/compiler/rustc_lexer/src/tests.rs
+++ b/compiler/rustc_lexer/src/tests.rs
@@ -67,6 +67,23 @@ fn test_unterminated_no_pound() {
 }
 
 #[test]
+fn test_too_many_hashes() {
+    let max_count = u16::MAX;
+    let mut hashes: String = "#".repeat(max_count.into());
+
+    // Valid number of hashes (65535 = 2^16 - 1), but invalid string.
+    check_raw_str(&hashes, max_count, Some(RawStrError::InvalidStarter { bad_char: '\u{0}' }));
+
+    // One more hash sign (65536 = 2^16) becomes too many.
+    hashes.push('#');
+    check_raw_str(
+        &hashes,
+        0,
+        Some(RawStrError::TooManyDelimiters { found: usize::from(max_count) + 1 }),
+    );
+}
+
+#[test]
 fn test_valid_shebang() {
     // https://github.com/rust-lang/rust/issues/70528
     let input = "#!/usr/bin/rustrun\nlet x = 5;";