Skip to content

Commit 27668fb

Browse files
committed
Allow casting integers to unsafe pointers in constant expressions.
1 parent 7bb0334 commit 27668fb

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

src/librustc/middle/trans/consts.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,9 @@ fn const_expr_unchecked(cx: @CrateContext, e: @ast::expr) -> ValueRef {
345345
(expr::cast_pointer, expr::cast_pointer) => {
346346
llvm::LLVMConstPointerCast(v, llty)
347347
}
348+
(expr::cast_integral, expr::cast_pointer) => {
349+
llvm::LLVMConstIntToPtr(v, llty)
350+
}
348351
_ => {
349352
cx.sess.impossible_case(e.span,
350353
~"bad combination of types for cast")
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
const a: *u8 = 0 as *u8;
12+
13+
fn main() {
14+
assert a == ptr::null();
15+
}

0 commit comments

Comments
 (0)