| ... | ... | @@ -22946,8 +22946,13 @@ fn beginComptimePtrLoad( |
| 22946 | 22946 | (try sema.coerceInMemoryAllowed(block, tv.ty, payload_ptr.container_ty, false, target, src, src)) == .ok; |
| 22947 | 22947 | if (coerce_in_mem_ok) { |
| 22948 | 22948 | const payload_val = switch (ptr_val.tag()) { |
| 22949 | | .eu_payload_ptr => tv.val.castTag(.eu_payload).?.data, |
| 22950 | | .opt_payload_ptr => if (tv.val.castTag(.opt_payload)) |some| some.data else tv.val, |
| 22949 | .eu_payload_ptr => if (tv.val.castTag(.eu_payload)) |some| some.data else { |
| 22950 | return sema.fail(block, src, "attempt to unwrap error: {s}", .{tv.val.castTag(.@"error").?.data.name}); |
| 22951 | }, |
| 22952 | .opt_payload_ptr => if (tv.val.castTag(.opt_payload)) |some| some.data else opt: { |
| 22953 | if (tv.val.isNull()) return sema.fail(block, src, "attempt to use null value", .{}); |
| 22954 | break :opt tv.val; |
| 22955 | }, |
| 22951 | 22956 | else => unreachable, |
| 22952 | 22957 | }; |
| 22953 | 22958 | tv.* = TypedValue{ .ty = payload_ty, .val = payload_val }; |
| ... | ... | @@ -22957,6 +22962,9 @@ fn beginComptimePtrLoad( |
| 22957 | 22962 | deref.pointee = null; |
| 22958 | 22963 | break :blk deref; |
| 22959 | 22964 | }, |
| 22965 | .null_value => { |
| 22966 | return sema.fail(block, src, "attempt to use null value", .{}); |
| 22967 | }, |
| 22960 | 22968 | |
| 22961 | 22969 | .zero, |
| 22962 | 22970 | .one, |