@@ -530,6 +530,9 @@ fn collect_generic_placeholder_names_from_expr(expr ast.Expr, mut seen map[strin
530530 collect_generic_placeholder_names_from_expr (expr.key_type, mut seen, mut out)
531531 collect_generic_placeholder_names_from_expr (expr.value_type, mut seen, mut out)
532532 }
533+ ast.PointerType {
534+ collect_generic_placeholder_names_from_expr (expr.base_type, mut seen, mut out)
535+ }
533536 ast.OptionType {
534537 collect_generic_placeholder_names_from_expr (expr.base_type, mut seen, mut out)
535538 }
@@ -972,6 +975,12 @@ fn infer_generic_type_bindings_from_param(param ast.Expr, concrete types.Type, g
972975 concrete.value_type, generic_params, mut bindings)
973976 }
974977 }
978+ ast.PointerType {
979+ if concrete is types.Pointer {
980+ infer_generic_type_bindings_from_param (param.base_type, concrete.base_type,
981+ generic_params, mut bindings)
982+ }
983+ }
975984 ast.OptionType {
976985 if concrete is types.OptionType {
977986 infer_generic_type_bindings_from_param (param.base_type, concrete.base_type,
@@ -1004,6 +1013,11 @@ fn direct_generic_placeholder_name(e ast.Expr) string {
10041013 ast.ModifierExpr {
10051014 return direct_generic_placeholder_name (e.expr)
10061015 }
1016+ ast.Type {
1017+ if e is ast.PointerType {
1018+ return direct_generic_placeholder_name (e.base_type)
1019+ }
1020+ }
10071021 else {}
10081022 }
10091023
@@ -4946,6 +4960,9 @@ fn expr_has_generic_placeholder(e ast.Expr) bool {
49464960 return expr_has_generic_placeholder (e.key_type)
49474961 || expr_has_generic_placeholder (e.value_type)
49484962 }
4963+ ast.PointerType {
4964+ return expr_has_generic_placeholder (e.base_type)
4965+ }
49494966 ast.OptionType {
49504967 return expr_has_generic_placeholder (e.base_type)
49514968 }
0 commit comments