about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorWonwoo Choi <chwo9843@gmail.com>2017-11-03 16:58:01 +0900
committerWonwoo Choi <chwo9843@gmail.com>2017-11-07 01:45:57 +0900
commit99ada043b622fd6186e49b503bc19cb8eec6dcb1 (patch)
tree7baa36786fe5368919e7686c9f573cb17f83c141 /src/test
parent74be072068737ae3ef30be66e34c1569cf652652 (diff)
downloadrust-99ada043b622fd6186e49b503bc19cb8eec6dcb1.tar.gz
rust-99ada043b622fd6186e49b503bc19cb8eec6dcb1.zip
Forbid casting to/from a pointer of unknown kind
Diffstat (limited to 'src/test')
-rw-r--r--src/test/ui/issue-45730.rs19
-rw-r--r--src/test/ui/issue-45730.stderr32
2 files changed, 51 insertions, 0 deletions
diff --git a/src/test/ui/issue-45730.rs b/src/test/ui/issue-45730.rs
new file mode 100644
index 00000000000..f725d69ca65
--- /dev/null
+++ b/src/test/ui/issue-45730.rs
@@ -0,0 +1,19 @@
+// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+use std::fmt;
+fn main() {
+    let x: *const _ = 0 as _;
+
+    let x: *const _ = 0 as *const _;
+    let y: Option<*const fmt::Debug> = Some(x) as _;
+
+    let x = 0 as *const i32 as *const _ as *mut _;
+}
diff --git a/src/test/ui/issue-45730.stderr b/src/test/ui/issue-45730.stderr
new file mode 100644
index 00000000000..c4f2e856b7b
--- /dev/null
+++ b/src/test/ui/issue-45730.stderr
@@ -0,0 +1,32 @@
+error[E0641]: cannot cast to a pointer of an unknown kind
+  --> $DIR/issue-45730.rs:13:23
+   |
+13 |     let x: *const _ = 0 as _;
+   |                       ^^^^^-
+   |                            |
+   |                            help: consider giving more type information
+   |
+   = note: The type information given here is insufficient to check whether the pointer cast is valid
+
+error[E0641]: cannot cast to a pointer of an unknown kind
+  --> $DIR/issue-45730.rs:15:23
+   |
+15 |     let x: *const _ = 0 as *const _;
+   |                       ^^^^^--------
+   |                            |
+   |                            help: consider giving more type information
+   |
+   = note: The type information given here is insufficient to check whether the pointer cast is valid
+
+error[E0641]: cannot cast to a pointer of an unknown kind
+  --> $DIR/issue-45730.rs:18:13
+   |
+18 |     let x = 0 as *const i32 as *const _ as *mut _;
+   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^------
+   |                                            |
+   |                                            help: consider giving more type information
+   |
+   = note: The type information given here is insufficient to check whether the pointer cast is valid
+
+error: aborting due to 3 previous errors
+