diff options
-rw-r--r-- | src/hir_typeck/expr_check.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/hir_typeck/expr_check.cpp b/src/hir_typeck/expr_check.cpp index af2e2e76..b6d41154 100644 --- a/src/hir_typeck/expr_check.cpp +++ b/src/hir_typeck/expr_check.cpp @@ -251,6 +251,16 @@ namespace { (Pointer, // TODO: Sized check - can't cast to a fat pointer from a thin one ), + (Primitive, + if( se != ::HIR::CoreType::Usize ) { + ERROR(sp, E0000, "Invalid cast to " << dst_ty << " from " << src_ty); + } + ), + (Function, + if( de.type != ::HIR::BorrowType::Shared || *de.inner != ::HIR::TypeRef::new_unit() ) { + ERROR(sp, E0000, "Invalid cast to " << dst_ty << " from " << src_ty); + } + ), (Borrow, this->check_types_equal(sp, *de.inner, *se.inner); ) |