| ... | ... | @@ -26465,23 +26465,21 @@ fn fieldCallBind( |
| 26465 | 26465 | .@"struct" => { |
| 26466 | 26466 | if (zcu.typeToStruct(concrete_ty)) |struct_type| { |
| 26467 | 26467 | const field_index = struct_type.nameIndex(ip, field_name) orelse break :find_field; |
| 26468 | | const field_ty: Type = .fromInterned(struct_type.field_types.get(ip)[field_index]); |
| 26469 | | |
| 26470 | | return sema.finishFieldCallBind(block, src, ptr_ty, field_ty, field_index, object_ptr); |
| 26468 | return sema.finishFieldCallBind(block, src, ptr_ty, field_index, object_ptr); |
| 26471 | 26469 | } else if (concrete_ty.isTuple(zcu)) { |
| 26472 | 26470 | if (field_name.eqlSlice("len", ip)) { |
| 26473 | 26471 | return .{ .direct = try pt.intRef(.usize, concrete_ty.structFieldCount(zcu)) }; |
| 26474 | 26472 | } |
| 26475 | 26473 | if (field_name.toUnsigned(ip)) |field_index| { |
| 26476 | 26474 | if (field_index >= concrete_ty.structFieldCount(zcu)) break :find_field; |
| 26477 | | return sema.finishFieldCallBind(block, src, ptr_ty, concrete_ty.fieldType(field_index, zcu), field_index, object_ptr); |
| 26475 | return sema.finishFieldCallBind(block, src, ptr_ty, field_index, object_ptr); |
| 26478 | 26476 | } |
| 26479 | 26477 | } else { |
| 26480 | 26478 | const max = concrete_ty.structFieldCount(zcu); |
| 26481 | 26479 | for (0..max) |i_usize| { |
| 26482 | 26480 | const i: u32 = @intCast(i_usize); |
| 26483 | 26481 | if (field_name == concrete_ty.structFieldName(i, zcu).unwrap().?) { |
| 26484 | | return sema.finishFieldCallBind(block, src, ptr_ty, concrete_ty.fieldType(i, zcu), i, object_ptr); |
| 26482 | return sema.finishFieldCallBind(block, src, ptr_ty, i, object_ptr); |
| 26485 | 26483 | } |
| 26486 | 26484 | } |
| 26487 | 26485 | } |
| ... | ... | @@ -26597,19 +26595,12 @@ fn finishFieldCallBind( |
| 26597 | 26595 | block: *Block, |
| 26598 | 26596 | src: LazySrcLoc, |
| 26599 | 26597 | ptr_ty: Type, |
| 26600 | | field_ty: Type, |
| 26601 | 26598 | field_index: u32, |
| 26602 | 26599 | object_ptr: Air.Inst.Ref, |
| 26603 | 26600 | ) CompileError!ResolvedFieldCallee { |
| 26604 | 26601 | const pt = sema.pt; |
| 26605 | 26602 | const zcu = pt.zcu; |
| 26606 | | const ptr_field_ty = try pt.ptrType(.{ |
| 26607 | | .child = field_ty.toIntern(), |
| 26608 | | .flags = .{ |
| 26609 | | .is_const = !ptr_ty.ptrIsMutable(zcu), |
| 26610 | | .address_space = ptr_ty.ptrAddressSpace(zcu), |
| 26611 | | }, |
| 26612 | | }); |
| 26603 | const ptr_field_ty = try ptr_ty.fieldPtrType(field_index, pt); |
| 26613 | 26604 | |
| 26614 | 26605 | const container_ty = ptr_ty.childType(zcu); |
| 26615 | 26606 | if (container_ty.zigTypeTag(zcu) == .@"struct") { |