authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-10-19 19:38:43-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2021-10-19 19:38:43-07:00
logc1508c98f479497c2b2586ea944be9f3ddae28fc
treed8a05453ecd23c9e1dbbc912731958e3b84c9c7a
parent2192d404d58a3e95d8fbb26e7fd73a95756172a6

stage2 minor cleanups


2 files changed, 25 insertions(+), 23 deletions(-)

src/Sema.zig+15-14
......@@ -9362,7 +9362,7 @@ fn zirTruncate(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
93629362 const dest_info = dest_ty.intInfo(target);
93639363
93649364 if (src_info.bits == 0 or dest_info.bits == 0) {
9365 return sema.addConstant(dest_ty, Value.initTag(.zero));
9365 return sema.addConstant(dest_ty, Value.zero);
93669366 }
93679367
93689368 if (!src_is_comptime_int) {
......@@ -10884,7 +10884,7 @@ fn fieldVal(
1088410884 },
1088510885 else => {},
1088610886 }
10887 return sema.fail(block, src, "type '{}' does not support field access (fieldVal, {}.{s})", .{ object_ty, object_ty, field_name });
10887 return sema.fail(block, src, "type '{}' does not support field access", .{object_ty});
1088810888}
1088910889
1089010890fn fieldPtr(
......@@ -13742,10 +13742,9 @@ fn typeHasOnePossibleValue(
1374213742 sema: *Sema,
1374313743 block: *Block,
1374413744 src: LazySrcLoc,
13745 starting_type: Type,
13745 ty: Type,
1374613746) CompileError!?Value {
13747 var ty = starting_type;
13748 while (true) switch (ty.tag()) {
13747 switch (ty.tag()) {
1374913748 .f16,
1375013749 .f32,
1375113750 .f64,
......@@ -13839,7 +13838,7 @@ fn typeHasOnePossibleValue(
1383913838 const enum_obj = resolved_ty.castTag(.enum_numbered).?.data;
1384013839 if (enum_obj.fields.count() == 1) {
1384113840 if (enum_obj.values.count() == 0) {
13842 return Value.initTag(.zero); // auto-numbered
13841 return Value.zero; // auto-numbered
1384313842 } else {
1384413843 return enum_obj.values.keys()[0];
1384513844 }
......@@ -13852,7 +13851,7 @@ fn typeHasOnePossibleValue(
1385213851 const enum_obj = resolved_ty.castTag(.enum_full).?.data;
1385313852 if (enum_obj.fields.count() == 1) {
1385413853 if (enum_obj.values.count() == 0) {
13855 return Value.initTag(.zero); // auto-numbered
13854 return Value.zero; // auto-numbered
1385613855 } else {
1385713856 return enum_obj.values.keys()[0];
1385813857 }
......@@ -13864,15 +13863,15 @@ fn typeHasOnePossibleValue(
1386413863 const resolved_ty = try sema.resolveTypeFields(block, src, ty);
1386513864 const enum_simple = resolved_ty.castTag(.enum_simple).?.data;
1386613865 if (enum_simple.fields.count() == 1) {
13867 return Value.initTag(.zero);
13866 return Value.zero;
1386813867 } else {
1386913868 return null;
1387013869 }
1387113870 },
1387213871 .enum_nonexhaustive => {
1387313872 const tag_ty = ty.castTag(.enum_nonexhaustive).?.data.tag_ty;
13874 if (tag_ty.cast(Type.Payload.Bits).?.data == 0) {
13875 return Value.initTag(.zero);
13873 if (!tag_ty.hasCodeGenBits()) {
13874 return Value.zero;
1387613875 } else {
1387713876 return null;
1387813877 }
......@@ -13892,7 +13891,7 @@ fn typeHasOnePossibleValue(
1389213891
1389313892 .int_unsigned, .int_signed => {
1389413893 if (ty.cast(Type.Payload.Bits).?.data == 0) {
13895 return Value.initTag(.zero);
13894 return Value.zero;
1389613895 } else {
1389713896 return null;
1389813897 }
......@@ -13900,14 +13899,16 @@ fn typeHasOnePossibleValue(
1390013899 .vector, .array, .array_u8 => {
1390113900 if (ty.arrayLen() == 0)
1390213901 return Value.initTag(.empty_array);
13903 _ = (try sema.typeHasOnePossibleValue(block, src, ty.elemType())) orelse return null;
13904 return Value.initTag(.the_only_possible_value);
13902 if ((try sema.typeHasOnePossibleValue(block, src, ty.elemType())) != null) {
13903 return Value.initTag(.the_only_possible_value);
13904 }
13905 return null;
1390513906 },
1390613907
1390713908 .inferred_alloc_const => unreachable,
1390813909 .inferred_alloc_mut => unreachable,
1390913910 .generic_poison => return error.GenericPoison,
13910 };
13911 }
1391113912}
1391213913
1391313914fn getAstTree(sema: *Sema, block: *Block) CompileError!*const std.zig.Ast {
src/type.zig+10-9
......@@ -2676,7 +2676,7 @@ pub const Type = extern union {
26762676
26772677 .pointer => return self.castTag(.pointer).?.data.sentinel,
26782678 .array_sentinel => return self.castTag(.array_sentinel).?.data.sentinel,
2679 .array_u8_sentinel_0 => return Value.initTag(.zero),
2679 .array_u8_sentinel_0 => return Value.zero,
26802680
26812681 else => unreachable,
26822682 };
......@@ -3115,15 +3115,15 @@ pub const Type = extern union {
31153115 .enum_simple => {
31163116 const enum_simple = ty.castTag(.enum_simple).?.data;
31173117 if (enum_simple.fields.count() == 1) {
3118 return Value.initTag(.zero);
3118 return Value.zero;
31193119 } else {
31203120 return null;
31213121 }
31223122 },
31233123 .enum_nonexhaustive => {
31243124 const tag_ty = ty.castTag(.enum_nonexhaustive).?.data.tag_ty;
3125 if (tag_ty.cast(Type.Payload.Bits).?.data == 0) {
3126 return Value.initTag(.zero);
3125 if (!tag_ty.hasCodeGenBits()) {
3126 return Value.zero;
31273127 } else {
31283128 return null;
31293129 }
......@@ -3143,7 +3143,7 @@ pub const Type = extern union {
31433143
31443144 .int_unsigned, .int_signed => {
31453145 if (ty.cast(Payload.Bits).?.data == 0) {
3146 return Value.initTag(.zero);
3146 return Value.zero;
31473147 } else {
31483148 return null;
31493149 }
......@@ -3151,8 +3151,9 @@ pub const Type = extern union {
31513151 .vector, .array, .array_u8 => {
31523152 if (ty.arrayLen() == 0)
31533153 return Value.initTag(.empty_array);
3154 _ = ty.elemType().onePossibleValue() orelse return null;
3155 return Value.initTag(.the_only_possible_value);
3154 if (ty.elemType().onePossibleValue() != null)
3155 return Value.initTag(.the_only_possible_value);
3156 return null;
31563157 },
31573158
31583159 .inferred_alloc_const => unreachable,
......@@ -3193,7 +3194,7 @@ pub const Type = extern union {
31933194 const info = self.intInfo(target);
31943195
31953196 if (info.signedness == .unsigned) {
3196 return Value.initTag(.zero);
3197 return Value.zero;
31973198 }
31983199
31993200 if (info.bits <= 6) {
......@@ -4027,7 +4028,7 @@ pub const Type = extern union {
40274028 ) Allocator.Error!Type {
40284029 if (elem_type.eql(Type.u8)) {
40294030 if (sent) |some| {
4030 if (some.eql(Value.initTag(.zero), elem_type)) {
4031 if (some.eql(Value.zero, elem_type)) {
40314032 return Tag.array_u8_sentinel_0.create(arena, len);
40324033 }
40334034 } else {