File tree 3 files changed +29
-15
lines changed
3 files changed +29
-15
lines changed Original file line number Diff line number Diff line change 41
41
#[ allow_internal_unstable( rustc_attrs, liballoc_internals) ]
42
42
macro_rules! vec {
43
43
( ) => (
44
- $crate:: __rust_force_expr! ( $crate :: vec:: Vec :: new( ) )
44
+ $crate:: vec:: Vec :: new( )
45
45
) ;
46
46
( $elem: expr; $n: expr) => (
47
- $crate:: __rust_force_expr! ( $crate :: vec:: from_elem( $elem, $n) )
47
+ $crate:: vec:: from_elem( $elem, $n)
48
48
) ;
49
49
( $( $x: expr) ,+ $( , ) ?) => (
50
- $crate :: __rust_force_expr! ( <[ _] >:: into_vec(
50
+ <[ _] >:: into_vec(
51
51
// This rustc_box is not required, but it produces a dramatic improvement in compile
52
52
// time when constructing arrays with many elements.
53
53
#[ rustc_box]
54
54
$crate:: boxed:: Box :: new( [ $( $x) ,+] )
55
- ) )
55
+ )
56
56
) ;
57
57
}
58
58
@@ -126,13 +126,3 @@ macro_rules! format {
126
126
res
127
127
} }
128
128
}
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
- }
Original file line number Diff line number Diff line change @@ -480,7 +480,7 @@ impl Wtf8Buf {
480
480
#[ inline]
481
481
pub ( crate ) fn extend_from_slice ( & mut self , other : & [ u8 ] ) {
482
482
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 ;
484
484
}
485
485
}
486
486
Original file line number Diff line number Diff line change @@ -725,3 +725,27 @@ fn wtf8_utf8_boundary_between_surrogates() {
725
725
string. push ( CodePoint :: from_u32 ( 0xD800 ) . unwrap ( ) ) ;
726
726
check_utf8_boundary ( & string, 3 ) ;
727
727
}
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
+ }
You can’t perform that action at this time.
0 commit comments