2
0
Эх сурвалжийг харах

Minimize `add_type_info_type` usage

gingerBill 2 жил өмнө
parent
commit
855ebceadc

+ 1 - 1
src/check_builtin.cpp

@@ -3573,7 +3573,7 @@ gb_internal bool check_builtin_procedure(CheckerContext *c, Operand *operand, As
 		Entity *base_type_entity = alloc_entity_type_name(scope, token, elem, EntityState_Resolved);
 		add_entity(c, scope, nullptr, base_type_entity);
 
-		add_type_info_type(c, soa_struct);
+		// add_type_info_type(c, soa_struct);
 
 		operand->type = soa_struct;
 		break;

+ 4 - 4
src/check_expr.cpp

@@ -8779,8 +8779,8 @@ gb_internal ExprKind check_type_assertion(CheckerContext *c, Operand *o, Ast *no
 			return kind;
 		}
 
-		add_type_info_type(c, o->type);
-		add_type_info_type(c, bsrc->Union.variants[0]);
+		// add_type_info_type(c, o->type);
+		// add_type_info_type(c, bsrc->Union.variants[0]);
 
 		o->type = bsrc->Union.variants[0];
 		o->mode = Addressing_OptionalOk;
@@ -8812,8 +8812,8 @@ gb_internal ExprKind check_type_assertion(CheckerContext *c, Operand *o, Ast *no
 				return kind;
 			}
 
-			add_type_info_type(c, o->type);
-			add_type_info_type(c, t);
+			// add_type_info_type(c, o->type);
+			// add_type_info_type(c, t);
 
 			o->type = t;
 			o->mode = Addressing_OptionalOk;

+ 5 - 3
src/check_stmt.cpp

@@ -1132,7 +1132,7 @@ gb_internal void check_type_switch_stmt(CheckerContext *ctx, Ast *node, u32 mod_
 
 	check_expr(ctx, &x, rhs);
 	check_assignment(ctx, &x, nullptr, str_lit("type switch expression"));
-	add_type_info_type(ctx, x.type);
+	// add_type_info_type(ctx, x.type);
 
 	TypeSwitchKind switch_kind = check_valid_type_switch_type(x.type);
 	if (switch_kind == TypeSwitch_Invalid) {
@@ -1223,7 +1223,7 @@ gb_internal void check_type_switch_stmt(CheckerContext *ctx, Ast *node, u32 mod_
 						continue;
 					}
 					case_type = y.type;
-					add_type_info_type(ctx, y.type);
+					// add_type_info_type(ctx, y.type);
 				} else if (switch_kind == TypeSwitch_Any) {
 					case_type = y.type;
 					add_type_info_type(ctx, y.type);
@@ -1259,7 +1259,9 @@ gb_internal void check_type_switch_stmt(CheckerContext *ctx, Ast *node, u32 mod_
 		if (case_type == nullptr) {
 			case_type = x.type;
 		}
-		add_type_info_type(ctx, case_type);
+		if (switch_kind == TypeSwitch_Any) {
+			add_type_info_type(ctx, case_type);
+		}
 
 		check_open_scope(ctx, stmt);
 		{