aboutsummaryrefslogtreecommitdiff
path: root/src/check_expr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/check_expr.cpp')
-rw-r--r--src/check_expr.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/check_expr.cpp b/src/check_expr.cpp
index 8b143cf36..9a146608f 100644
--- a/src/check_expr.cpp
+++ b/src/check_expr.cpp
@@ -1880,12 +1880,20 @@ bool check_is_castable_to(CheckerContext *c, Operand *operand, Type *y) {
return true;
}
// cstring -> ^u8
- if (src == t_cstring && is_type_u8_ptr(dst)) {
+ if (are_types_identical(src, t_cstring) && is_type_u8_ptr(dst)) {
+ return true;
+ }
+ // cstring -> rawptr
+ if (are_types_identical(src, t_cstring) && is_type_rawptr(dst)) {
return true;
}
// ^u8 -> cstring
- if (is_type_u8_ptr(src) && dst == t_cstring) {
+ if (is_type_u8_ptr(src) && are_types_identical(dst, t_cstring)) {
+ return true;
+ }
+ // rawptr -> cstring
+ if (is_type_rawptr(src) && are_types_identical(dst, t_cstring)) {
return true;
}
// proc <-> proc