diff --git a/vlib/v/checker/checker.v b/vlib/v/checker/checker.v index 3022740d3b15a1..9cfc2a43cbf03c 100644 --- a/vlib/v/checker/checker.v +++ b/vlib/v/checker/checker.v @@ -3193,7 +3193,8 @@ fn (mut c Checker) cast_expr(mut node ast.CastExpr) ast.Type { type_str := c.table.type_to_str(to_type) type_rm_ptr := type_str.replace('&', '') - if type_rm_ptr.len == 1 && type_rm_ptr.starts_with_capital() { + if type_rm_ptr.len == 1 && type_rm_ptr.starts_with_capital() + && !c.expected_type.has_flag(.generic) { c.error('unknown type `${to_sym.name}`', node.pos) } diff --git a/vlib/v/checker/tests/globals/cast_expr_T_type_err.vv b/vlib/v/checker/tests/globals/cast_expr_T_type_err.vv index cd2f9c3f445724..f4fc2a371e0466 100644 --- a/vlib/v/checker/tests/globals/cast_expr_T_type_err.vv +++ b/vlib/v/checker/tests/globals/cast_expr_T_type_err.vv @@ -8,15 +8,3 @@ __global ( fn main() { } - -module main - -__global ( - fo = A(0) - fo1 = &A(0) -) - -fn main() { - -} -