make sure globals that yield function pointers aren't treated like functions
This commit is contained in:
parent
225a6a272d
commit
040a501a68
2 changed files with 3 additions and 3 deletions
|
@ -1189,7 +1189,7 @@ impl<'a, 'b, 'mir, 'tcx> FnEvalContext<'a, 'b, 'mir, 'tcx> {
|
|||
match *literal {
|
||||
Value { ref value } => Ok(self.const_to_ptr(value)?),
|
||||
Item { def_id, substs } => {
|
||||
if ty.is_fn() {
|
||||
if let ty::TyFnDef(..) = ty.sty {
|
||||
Err(EvalError::Unimplemented("unimplemented: mentions of function items".to_string()))
|
||||
} else {
|
||||
let cid = ConstantId {
|
||||
|
|
|
@ -8,7 +8,7 @@ use super::{
|
|||
};
|
||||
use error::EvalResult;
|
||||
use rustc::mir::repr as mir;
|
||||
use rustc::ty::subst;
|
||||
use rustc::ty::{subst, self};
|
||||
use rustc::hir::def_id::DefId;
|
||||
use rustc::mir::visit::{Visitor, LvalueContext};
|
||||
use syntax::codemap::Span;
|
||||
|
@ -151,7 +151,7 @@ impl<'a, 'b, 'mir, 'tcx> Visitor<'tcx> for ConstantExtractor<'a, 'b, 'mir, 'tcx>
|
|||
// already computed by rustc
|
||||
mir::Literal::Value { .. } => {}
|
||||
mir::Literal::Item { def_id, substs } => {
|
||||
if constant.ty.is_fn() {
|
||||
if let ty::TyFnDef(..) = constant.ty.sty {
|
||||
// No need to do anything here, even if function pointers are implemented,
|
||||
// because the type is the actual function, not the signature of the function.
|
||||
// Thus we can simply create a zero sized allocation in `evaluate_operand`
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue