Browse Source

Merge pull request #5627 from A1029384756/master

skip errors on polymorphic procs when in a proc group with other options
gingerBill 1 tuần trước cách đây
mục cha
commit
f926c1861f
3 tập tin đã thay đổi với 6 bổ sung1 xóa
  1. 2 0
      src/check_expr.cpp
  2. 3 1
      src/check_type.cpp
  3. 1 0
      src/checker.hpp

+ 2 - 0
src/check_expr.cpp

@@ -7126,6 +7126,7 @@ gb_internal CallArgumentData check_call_arguments_proc_group(CheckerContext *c,
 	gbString expr_name = expr_to_string(operand->expr);
 	defer (gb_string_free(expr_name));
 
+	c->in_proc_group = true;
 	for_array(i, procs) {
 		Entity *p = procs[i];
 		if (p->flags & EntityFlag_Disabled) {
@@ -7168,6 +7169,7 @@ gb_internal CallArgumentData check_call_arguments_proc_group(CheckerContext *c,
 			array_add(&valids, item);
 		}
 	}
+	c->in_proc_group = false;
 
 	if (max_matched_features > 0) {
 		for_array(i, valids) {

+ 3 - 1
src/check_type.cpp

@@ -2085,7 +2085,9 @@ gb_internal Type *check_get_params(CheckerContext *ctx, Scope *scope, Ast *_para
 							if (op.mode == Addressing_Constant) {
 								poly_const = op.value;
 							} else {
-								error(op.expr, "Expected a constant value for this polymorphic name parameter, got %s", expr_to_string(op.expr));
+								if (!ctx->in_proc_group) {
+									error(op.expr, "Expected a constant value for this polymorphic name parameter, got %s", expr_to_string(op.expr));
+								}
 								success = false;
 							}
 						}

+ 1 - 0
src/checker.hpp

@@ -563,6 +563,7 @@ struct CheckerContext {
 
 	u32        stmt_flags;
 	bool       in_enum_type;
+	bool       in_proc_group;
 	bool       collect_delayed_decls;
 	bool       allow_polymorphic_types;
 	bool       disallow_polymorphic_return_types; // NOTE(zen3ger): no poly type decl in return types