Skip to content

Commit 652f0b8

Browse files
author
The Miri Cronjob Bot
committed
Merge from rustc
2 parents cf231e8 + 6c38c60 commit 652f0b8

File tree

3 files changed

+29
-15
lines changed

3 files changed

+29
-15
lines changed

alloc/src/macros.rs

+4-14
Original file line numberDiff line numberDiff line change
@@ -41,18 +41,18 @@
4141
#[allow_internal_unstable(rustc_attrs, liballoc_internals)]
4242
macro_rules! vec {
4343
() => (
44-
$crate::__rust_force_expr!($crate::vec::Vec::new())
44+
$crate::vec::Vec::new()
4545
);
4646
($elem:expr; $n:expr) => (
47-
$crate::__rust_force_expr!($crate::vec::from_elem($elem, $n))
47+
$crate::vec::from_elem($elem, $n)
4848
);
4949
($($x:expr),+ $(,)?) => (
50-
$crate::__rust_force_expr!(<[_]>::into_vec(
50+
<[_]>::into_vec(
5151
// This rustc_box is not required, but it produces a dramatic improvement in compile
5252
// time when constructing arrays with many elements.
5353
#[rustc_box]
5454
$crate::boxed::Box::new([$($x),+])
55-
))
55+
)
5656
);
5757
}
5858

@@ -126,13 +126,3 @@ macro_rules! format {
126126
res
127127
}}
128128
}
129-
130-
/// Force AST node to an expression to improve diagnostics in pattern position.
131-
#[doc(hidden)]
132-
#[macro_export]
133-
#[unstable(feature = "liballoc_internals", issue = "none", reason = "implementation detail")]
134-
macro_rules! __rust_force_expr {
135-
($e:expr) => {
136-
$e
137-
};
138-
}

std/src/sys_common/wtf8.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -480,7 +480,7 @@ impl Wtf8Buf {
480480
#[inline]
481481
pub(crate) fn extend_from_slice(&mut self, other: &[u8]) {
482482
self.bytes.extend_from_slice(other);
483-
self.is_known_utf8 = self.is_known_utf8 || self.next_surrogate(0).is_none();
483+
self.is_known_utf8 = false;
484484
}
485485
}
486486

std/src/sys_common/wtf8/tests.rs

+24
Original file line numberDiff line numberDiff line change
@@ -725,3 +725,27 @@ fn wtf8_utf8_boundary_between_surrogates() {
725725
string.push(CodePoint::from_u32(0xD800).unwrap());
726726
check_utf8_boundary(&string, 3);
727727
}
728+
729+
#[test]
730+
fn wobbled_wtf8_plus_bytes_isnt_utf8() {
731+
let mut string: Wtf8Buf = unsafe { Wtf8::from_bytes_unchecked(b"\xED\xA0\x80").to_owned() };
732+
assert!(!string.is_known_utf8);
733+
string.extend_from_slice(b"some utf-8");
734+
assert!(!string.is_known_utf8);
735+
}
736+
737+
#[test]
738+
fn wobbled_wtf8_plus_str_isnt_utf8() {
739+
let mut string: Wtf8Buf = unsafe { Wtf8::from_bytes_unchecked(b"\xED\xA0\x80").to_owned() };
740+
assert!(!string.is_known_utf8);
741+
string.push_str("some utf-8");
742+
assert!(!string.is_known_utf8);
743+
}
744+
745+
#[test]
746+
fn unwobbly_wtf8_plus_utf8_is_utf8() {
747+
let mut string: Wtf8Buf = Wtf8Buf::from_str("hello world");
748+
assert!(string.is_known_utf8);
749+
string.push_str("some utf-8");
750+
assert!(string.is_known_utf8);
751+
}

0 commit comments

Comments
 (0)