about summary refs log tree commit diff
path: root/src/test/ui
diff options
context:
space:
mode:
authorLeSeulArtichaut <leseulartichaut@gmail.com>2020-06-30 20:14:54 +0200
committerLeSeulArtichaut <leseulartichaut@gmail.com>2020-06-30 21:03:34 +0200
commit6a7a6528f69ddb32574e486471c400fee6de8fd7 (patch)
tree49191e3fc5c4d1868f8373909bec708636871246 /src/test/ui
parenta1623ff3b6a48e7ac29e1c25900989851278743b (diff)
downloadrust-6a7a6528f69ddb32574e486471c400fee6de8fd7.tar.gz
rust-6a7a6528f69ddb32574e486471c400fee6de8fd7.zip
Bless failing tests
Diffstat (limited to 'src/test/ui')
-rw-r--r--src/test/ui/consts/miri_unleashed/drop.stderr4
-rw-r--r--src/test/ui/consts/offset_from_ub.stderr60
-rw-r--r--src/test/ui/consts/offset_ub.stderr132
-rw-r--r--src/test/ui/recursion/issue-38591-non-regular-dropck-recursion.stderr8
4 files changed, 105 insertions, 99 deletions
diff --git a/src/test/ui/consts/miri_unleashed/drop.stderr b/src/test/ui/consts/miri_unleashed/drop.stderr
index 34ab5155e22..1fa3992cc5a 100644
--- a/src/test/ui/consts/miri_unleashed/drop.stderr
+++ b/src/test/ui/consts/miri_unleashed/drop.stderr
@@ -4,7 +4,9 @@ error[E0080]: could not evaluate static initializer
 LL | / pub unsafe fn drop_in_place<T: ?Sized>(to_drop: *mut T) {
 LL | |     // Code here does not matter - this is replaced by the
 LL | |     // real drop glue by the compiler.
-LL | |     drop_in_place(to_drop)
+LL | |
+LL | |     // SAFETY: see comment above
+LL | |     unsafe { drop_in_place(to_drop) }
 LL | | }
    | | ^
    | | |
diff --git a/src/test/ui/consts/offset_from_ub.stderr b/src/test/ui/consts/offset_from_ub.stderr
index cde2fe32626..aa65f4de3e1 100644
--- a/src/test/ui/consts/offset_from_ub.stderr
+++ b/src/test/ui/consts/offset_from_ub.stderr
@@ -1,12 +1,12 @@
 error: any use of this value will cause an error
   --> $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
    |
-LL |           intrinsics::ptr_offset_from(self, origin)
-   |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   |           |
-   |           ptr_offset_from cannot compute offset of pointers into different allocations.
-   |           inside `std::ptr::const_ptr::<impl *const Struct>::offset_from` at $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
-   |           inside `DIFFERENT_ALLOC` at $DIR/offset_from_ub.rs:17:27
+LL |           unsafe { intrinsics::ptr_offset_from(self, origin) }
+   |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |                    |
+   |                    ptr_offset_from cannot compute offset of pointers into different allocations.
+   |                    inside `std::ptr::const_ptr::<impl *const Struct>::offset_from` at $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
+   |                    inside `DIFFERENT_ALLOC` at $DIR/offset_from_ub.rs:17:27
    | 
   ::: $DIR/offset_from_ub.rs:11:1
    |
@@ -24,12 +24,12 @@ LL | | };
 error: any use of this value will cause an error
   --> $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
    |
-LL |           intrinsics::ptr_offset_from(self, origin)
-   |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   |           |
-   |           unable to turn bytes into a pointer
-   |           inside `std::ptr::const_ptr::<impl *const u8>::offset_from` at $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
-   |           inside `NOT_PTR` at $DIR/offset_from_ub.rs:23:14
+LL |           unsafe { intrinsics::ptr_offset_from(self, origin) }
+   |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |                    |
+   |                    unable to turn bytes into a pointer
+   |                    inside `std::ptr::const_ptr::<impl *const u8>::offset_from` at $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
+   |                    inside `NOT_PTR` at $DIR/offset_from_ub.rs:23:14
    | 
   ::: $DIR/offset_from_ub.rs:21:1
    |
@@ -42,12 +42,12 @@ LL | | };
 error: any use of this value will cause an error
   --> $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
    |
-LL |           intrinsics::ptr_offset_from(self, origin)
-   |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   |           |
-   |           exact_div: 1_isize cannot be divided by 2_isize without remainder
-   |           inside `std::ptr::const_ptr::<impl *const u16>::offset_from` at $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
-   |           inside `NOT_MULTIPLE_OF_SIZE` at $DIR/offset_from_ub.rs:31:14
+LL |           unsafe { intrinsics::ptr_offset_from(self, origin) }
+   |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |                    |
+   |                    exact_div: 1_isize cannot be divided by 2_isize without remainder
+   |                    inside `std::ptr::const_ptr::<impl *const u16>::offset_from` at $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
+   |                    inside `NOT_MULTIPLE_OF_SIZE` at $DIR/offset_from_ub.rs:31:14
    | 
   ::: $DIR/offset_from_ub.rs:26:1
    |
@@ -63,12 +63,12 @@ LL | | };
 error: any use of this value will cause an error
   --> $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
    |
-LL |           intrinsics::ptr_offset_from(self, origin)
-   |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   |           |
-   |           inbounds test failed: 0x0 is not a valid pointer
-   |           inside `std::ptr::const_ptr::<impl *const u8>::offset_from` at $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
-   |           inside `OFFSET_FROM_NULL` at $DIR/offset_from_ub.rs:37:14
+LL |           unsafe { intrinsics::ptr_offset_from(self, origin) }
+   |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |                    |
+   |                    inbounds test failed: 0x0 is not a valid pointer
+   |                    inside `std::ptr::const_ptr::<impl *const u8>::offset_from` at $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
+   |                    inside `OFFSET_FROM_NULL` at $DIR/offset_from_ub.rs:37:14
    | 
   ::: $DIR/offset_from_ub.rs:34:1
    |
@@ -82,12 +82,12 @@ LL | | };
 error: any use of this value will cause an error
   --> $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
    |
-LL |           intrinsics::ptr_offset_from(self, origin)
-   |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   |           |
-   |           unable to turn bytes into a pointer
-   |           inside `std::ptr::const_ptr::<impl *const u8>::offset_from` at $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
-   |           inside `DIFFERENT_INT` at $DIR/offset_from_ub.rs:44:14
+LL |           unsafe { intrinsics::ptr_offset_from(self, origin) }
+   |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |                    |
+   |                    unable to turn bytes into a pointer
+   |                    inside `std::ptr::const_ptr::<impl *const u8>::offset_from` at $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
+   |                    inside `DIFFERENT_INT` at $DIR/offset_from_ub.rs:44:14
    | 
   ::: $DIR/offset_from_ub.rs:40:1
    |
diff --git a/src/test/ui/consts/offset_ub.stderr b/src/test/ui/consts/offset_ub.stderr
index 0ab81cc0c5b..0a144a6bac2 100644
--- a/src/test/ui/consts/offset_ub.stderr
+++ b/src/test/ui/consts/offset_ub.stderr
@@ -1,12 +1,12 @@
 error: any use of this value will cause an error
   --> $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
    |
-LL |         intrinsics::offset(self, count)
-   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   |         |
-   |         overflowing in-bounds pointer arithmetic
-   |         inside `std::ptr::const_ptr::<impl *const u8>::offset` at $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
-   |         inside `BEFORE_START` at $DIR/offset_ub.rs:7:46
+LL |         unsafe { intrinsics::offset(self, count) }
+   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |                  |
+   |                  overflowing in-bounds pointer arithmetic
+   |                  inside `std::ptr::const_ptr::<impl *const u8>::offset` at $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
+   |                  inside `BEFORE_START` at $DIR/offset_ub.rs:7:46
    | 
   ::: $DIR/offset_ub.rs:7:1
    |
@@ -18,12 +18,12 @@ LL | pub const BEFORE_START: *const u8 = unsafe { (&0u8 as *const u8).offset(-1)
 error: any use of this value will cause an error
   --> $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
    |
-LL |         intrinsics::offset(self, count)
-   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   |         |
-   |         inbounds test failed: pointer must be in-bounds at offset 2, but is outside bounds of allocN which has size 1
-   |         inside `std::ptr::const_ptr::<impl *const u8>::offset` at $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
-   |         inside `AFTER_END` at $DIR/offset_ub.rs:8:43
+LL |         unsafe { intrinsics::offset(self, count) }
+   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |                  |
+   |                  inbounds test failed: pointer must be in-bounds at offset 2, but is outside bounds of allocN which has size 1
+   |                  inside `std::ptr::const_ptr::<impl *const u8>::offset` at $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
+   |                  inside `AFTER_END` at $DIR/offset_ub.rs:8:43
    | 
   ::: $DIR/offset_ub.rs:8:1
    |
@@ -33,12 +33,12 @@ LL | pub const AFTER_END: *const u8 = unsafe { (&0u8 as *const u8).offset(2) };
 error: any use of this value will cause an error
   --> $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
    |
-LL |         intrinsics::offset(self, count)
-   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   |         |
-   |         inbounds test failed: pointer must be in-bounds at offset 101, but is outside bounds of allocN which has size 100
-   |         inside `std::ptr::const_ptr::<impl *const u8>::offset` at $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
-   |         inside `AFTER_ARRAY` at $DIR/offset_ub.rs:9:45
+LL |         unsafe { intrinsics::offset(self, count) }
+   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |                  |
+   |                  inbounds test failed: pointer must be in-bounds at offset 101, but is outside bounds of allocN which has size 100
+   |                  inside `std::ptr::const_ptr::<impl *const u8>::offset` at $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
+   |                  inside `AFTER_ARRAY` at $DIR/offset_ub.rs:9:45
    | 
   ::: $DIR/offset_ub.rs:9:1
    |
@@ -48,12 +48,12 @@ LL | pub const AFTER_ARRAY: *const u8 = unsafe { [0u8; 100].as_ptr().offset(101)
 error: any use of this value will cause an error
   --> $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
    |
-LL |         intrinsics::offset(self, count)
-   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   |         |
-   |         overflowing in-bounds pointer arithmetic
-   |         inside `std::ptr::const_ptr::<impl *const u16>::offset` at $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
-   |         inside `OVERFLOW` at $DIR/offset_ub.rs:11:43
+LL |         unsafe { intrinsics::offset(self, count) }
+   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |                  |
+   |                  overflowing in-bounds pointer arithmetic
+   |                  inside `std::ptr::const_ptr::<impl *const u16>::offset` at $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
+   |                  inside `OVERFLOW` at $DIR/offset_ub.rs:11:43
    | 
   ::: $DIR/offset_ub.rs:11:1
    |
@@ -63,12 +63,12 @@ LL | pub const OVERFLOW: *const u16 = unsafe { [0u16; 1].as_ptr().offset(isize::
 error: any use of this value will cause an error
   --> $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
    |
-LL |         intrinsics::offset(self, count)
-   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   |         |
-   |         overflowing in-bounds pointer arithmetic
-   |         inside `std::ptr::const_ptr::<impl *const u16>::offset` at $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
-   |         inside `UNDERFLOW` at $DIR/offset_ub.rs:12:44
+LL |         unsafe { intrinsics::offset(self, count) }
+   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |                  |
+   |                  overflowing in-bounds pointer arithmetic
+   |                  inside `std::ptr::const_ptr::<impl *const u16>::offset` at $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
+   |                  inside `UNDERFLOW` at $DIR/offset_ub.rs:12:44
    | 
   ::: $DIR/offset_ub.rs:12:1
    |
@@ -78,12 +78,12 @@ LL | pub const UNDERFLOW: *const u16 = unsafe { [0u16; 1].as_ptr().offset(isize:
 error: any use of this value will cause an error
   --> $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
    |
-LL |         intrinsics::offset(self, count)
-   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   |         |
-   |         overflowing in-bounds pointer arithmetic
-   |         inside `std::ptr::const_ptr::<impl *const u8>::offset` at $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
-   |         inside `OVERFLOW_ADDRESS_SPACE` at $DIR/offset_ub.rs:13:56
+LL |         unsafe { intrinsics::offset(self, count) }
+   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |                  |
+   |                  overflowing in-bounds pointer arithmetic
+   |                  inside `std::ptr::const_ptr::<impl *const u8>::offset` at $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
+   |                  inside `OVERFLOW_ADDRESS_SPACE` at $DIR/offset_ub.rs:13:56
    | 
   ::: $DIR/offset_ub.rs:13:1
    |
@@ -93,12 +93,12 @@ LL | pub const OVERFLOW_ADDRESS_SPACE: *const u8 = unsafe { (usize::MAX as *cons
 error: any use of this value will cause an error
   --> $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
    |
-LL |         intrinsics::offset(self, count)
-   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   |         |
-   |         overflowing in-bounds pointer arithmetic
-   |         inside `std::ptr::const_ptr::<impl *const u8>::offset` at $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
-   |         inside `UNDERFLOW_ADDRESS_SPACE` at $DIR/offset_ub.rs:14:57
+LL |         unsafe { intrinsics::offset(self, count) }
+   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |                  |
+   |                  overflowing in-bounds pointer arithmetic
+   |                  inside `std::ptr::const_ptr::<impl *const u8>::offset` at $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
+   |                  inside `UNDERFLOW_ADDRESS_SPACE` at $DIR/offset_ub.rs:14:57
    | 
   ::: $DIR/offset_ub.rs:14:1
    |
@@ -108,12 +108,12 @@ LL | pub const UNDERFLOW_ADDRESS_SPACE: *const u8 = unsafe { (1 as *const u8).of
 error: any use of this value will cause an error
   --> $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
    |
-LL |         intrinsics::offset(self, count)
-   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   |         |
-   |         inbounds test failed: pointer must be in-bounds at offset 1, but is outside bounds of allocN which has size 0
-   |         inside `std::ptr::const_ptr::<impl *const u8>::offset` at $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
-   |         inside `ZERO_SIZED_ALLOC` at $DIR/offset_ub.rs:16:50
+LL |         unsafe { intrinsics::offset(self, count) }
+   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |                  |
+   |                  inbounds test failed: pointer must be in-bounds at offset 1, but is outside bounds of allocN which has size 0
+   |                  inside `std::ptr::const_ptr::<impl *const u8>::offset` at $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
+   |                  inside `ZERO_SIZED_ALLOC` at $DIR/offset_ub.rs:16:50
    | 
   ::: $DIR/offset_ub.rs:16:1
    |
@@ -123,12 +123,12 @@ LL | pub const ZERO_SIZED_ALLOC: *const u8 = unsafe { [0u8; 0].as_ptr().offset(1
 error: any use of this value will cause an error
   --> $SRC_DIR/libcore/ptr/mut_ptr.rs:LL:COL
    |
-LL |         intrinsics::offset(self, count) as *mut T
-   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   |         |
-   |         unable to turn bytes into a pointer
-   |         inside `std::ptr::mut_ptr::<impl *mut u8>::offset` at $SRC_DIR/libcore/ptr/mut_ptr.rs:LL:COL
-   |         inside `DANGLING` at $DIR/offset_ub.rs:17:42
+LL |         unsafe { intrinsics::offset(self, count) as *mut T }
+   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |                  |
+   |                  unable to turn bytes into a pointer
+   |                  inside `std::ptr::mut_ptr::<impl *mut u8>::offset` at $SRC_DIR/libcore/ptr/mut_ptr.rs:LL:COL
+   |                  inside `DANGLING` at $DIR/offset_ub.rs:17:42
    | 
   ::: $DIR/offset_ub.rs:17:1
    |
@@ -138,12 +138,12 @@ LL | pub const DANGLING: *const u8 = unsafe { ptr::NonNull::<u8>::dangling().as_
 error: any use of this value will cause an error
   --> $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
    |
-LL |         intrinsics::offset(self, count)
-   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   |         |
-   |         inbounds test failed: 0x0 is not a valid pointer
-   |         inside `std::ptr::const_ptr::<impl *const u8>::offset` at $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
-   |         inside `NULL_OFFSET_ZERO` at $DIR/offset_ub.rs:20:50
+LL |         unsafe { intrinsics::offset(self, count) }
+   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |                  |
+   |                  inbounds test failed: 0x0 is not a valid pointer
+   |                  inside `std::ptr::const_ptr::<impl *const u8>::offset` at $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
+   |                  inside `NULL_OFFSET_ZERO` at $DIR/offset_ub.rs:20:50
    | 
   ::: $DIR/offset_ub.rs:20:1
    |
@@ -153,12 +153,12 @@ LL | pub const NULL_OFFSET_ZERO: *const u8 = unsafe { ptr::null::<u8>().offset(0
 error: any use of this value will cause an error
   --> $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
    |
-LL |         intrinsics::offset(self, count)
-   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-   |         |
-   |         unable to turn bytes into a pointer
-   |         inside `std::ptr::const_ptr::<impl *const u8>::offset` at $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
-   |         inside `UNDERFLOW_ABS` at $DIR/offset_ub.rs:23:47
+LL |         unsafe { intrinsics::offset(self, count) }
+   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+   |                  |
+   |                  unable to turn bytes into a pointer
+   |                  inside `std::ptr::const_ptr::<impl *const u8>::offset` at $SRC_DIR/libcore/ptr/const_ptr.rs:LL:COL
+   |                  inside `UNDERFLOW_ABS` at $DIR/offset_ub.rs:23:47
    | 
   ::: $DIR/offset_ub.rs:23:1
    |
diff --git a/src/test/ui/recursion/issue-38591-non-regular-dropck-recursion.stderr b/src/test/ui/recursion/issue-38591-non-regular-dropck-recursion.stderr
index 0552847c48c..3296a2cb094 100644
--- a/src/test/ui/recursion/issue-38591-non-regular-dropck-recursion.stderr
+++ b/src/test/ui/recursion/issue-38591-non-regular-dropck-recursion.stderr
@@ -4,7 +4,9 @@ error: reached the recursion limit while instantiating `std::intrinsics::drop_in
 LL | / pub unsafe fn drop_in_place<T: ?Sized>(to_drop: *mut T) {
 LL | |     // Code here does not matter - this is replaced by the
 LL | |     // real drop glue by the compiler.
-LL | |     drop_in_place(to_drop)
+LL | |
+LL | |     // SAFETY: see comment above
+LL | |     unsafe { drop_in_place(to_drop) }
 LL | | }
    | |_^
    |
@@ -14,7 +16,9 @@ note: `std::intrinsics::drop_in_place` defined here
 LL | / pub unsafe fn drop_in_place<T: ?Sized>(to_drop: *mut T) {
 LL | |     // Code here does not matter - this is replaced by the
 LL | |     // real drop glue by the compiler.
-LL | |     drop_in_place(to_drop)
+LL | |
+LL | |     // SAFETY: see comment above
+LL | |     unsafe { drop_in_place(to_drop) }
 LL | | }
    | |_^