summaryrefslogtreecommitdiff
path: root/src/hir_typeck/expr_check.cpp
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2016-09-27 12:53:31 +0800
committerJohn Hodge <tpg@mutabah.net>2016-09-27 12:53:31 +0800
commit5fbfd267b54e243ebe2ad3820d75359d7ed95988 (patch)
treec55f8a72a2c25d9cee659b33f11232ffe130dd65 /src/hir_typeck/expr_check.cpp
parent93f6bc5fa72608ea8f032a429ae4d1613befc04c (diff)
downloadmrust-5fbfd267b54e243ebe2ad3820d75359d7ed95988.tar.gz
HIR Typecheck - Support casting all integers to pointers
Diffstat (limited to 'src/hir_typeck/expr_check.cpp')
-rw-r--r--src/hir_typeck/expr_check.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/hir_typeck/expr_check.cpp b/src/hir_typeck/expr_check.cpp
index b517e421..0b700c5d 100644
--- a/src/hir_typeck/expr_check.cpp
+++ b/src/hir_typeck/expr_check.cpp
@@ -255,11 +255,25 @@ namespace {
),
(Pointer,
// TODO: Sized check - can't cast to a fat pointer from a thin one
+ //if( ! this->m_resolve.type_is_sized(*de.inner) ) {
+ // ERROR(sp, E0000, "Invalid cast to fat pointer " << dst_ty << " from " << src_ty);
+ //}
),
(Primitive,
- if( se != ::HIR::CoreType::Usize ) {
+ switch(se)
+ {
+ case ::HIR::CoreType::Bool:
+ case ::HIR::CoreType::Char:
+ case ::HIR::CoreType::Str:
+ case ::HIR::CoreType::F32:
+ case ::HIR::CoreType::F64:
ERROR(sp, E0000, "Invalid cast to " << dst_ty << " from " << src_ty);
+ default:
+ break;
}
+ //if( ! this->m_resolve.type_is_sized(*de.inner) ) {
+ // ERROR(sp, E0000, "Invalid cast to fat pointer " << dst_ty << " from " << src_ty);
+ //}
),
(Function,
if( *de.inner != ::HIR::TypeRef::new_unit() ) {