diff options
| -rw-r--r-- | src/librustc/middle/trans/callee.rs | 3 | ||||
| -rw-r--r-- | src/test/run-pass/static-function-pointer.rs | 19 |
2 files changed, 21 insertions, 1 deletions
diff --git a/src/librustc/middle/trans/callee.rs b/src/librustc/middle/trans/callee.rs index 4caaf384873..5072c879e2b 100644 --- a/src/librustc/middle/trans/callee.rs +++ b/src/librustc/middle/trans/callee.rs @@ -132,6 +132,7 @@ pub fn trans(bcx: @mut Block, expr: @ast::expr) -> Callee { ast::def_struct(def_id) => { fn_callee(bcx, trans_fn_ref(bcx, def_id, ref_expr.id)) } + ast::def_static(*) | ast::def_arg(*) | ast::def_local(*) | ast::def_binding(*) | @@ -140,7 +141,7 @@ pub fn trans(bcx: @mut Block, expr: @ast::expr) -> Callee { datum_callee(bcx, ref_expr) } ast::def_mod(*) | ast::def_foreign_mod(*) | ast::def_trait(*) | - ast::def_static(*) | ast::def_ty(*) | ast::def_prim_ty(*) | + ast::def_ty(*) | ast::def_prim_ty(*) | ast::def_use(*) | ast::def_typaram_binder(*) | ast::def_region(*) | ast::def_label(*) | ast::def_ty_param(*) | ast::def_self_ty(*) | ast::def_method(*) => { diff --git a/src/test/run-pass/static-function-pointer.rs b/src/test/run-pass/static-function-pointer.rs new file mode 100644 index 00000000000..0bb8c4e2cc3 --- /dev/null +++ b/src/test/run-pass/static-function-pointer.rs @@ -0,0 +1,19 @@ +// Copyright 2012 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. + +fn f(x: int) -> int { x } + +static F: extern fn(int) -> int = f; +static mut G: extern fn(int) -> int = f; + +fn main() { + F(42); + unsafe { G(7); } +} |
