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...@@ -9362,7 +9362,7 @@ fn zirTruncate(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!Ai
9362 const dest_info = dest_ty.intInfo(target);9362 const dest_info = dest_ty.intInfo(target);
93639363
9364 if (src_info.bits == 0 or dest_info.bits == 0) {9364 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);
9366 }9366 }
93679367
9368 if (!src_is_comptime_int) {9368 if (!src_is_comptime_int) {
...@@ -10884,7 +10884,7 @@ fn fieldVal(...@@ -10884,7 +10884,7 @@ fn fieldVal(
10884 },10884 },
10885 else => {},10885 else => {},
10886 }10886 }
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});
10888}10888}
1088910889
10890fn fieldPtr(10890fn fieldPtr(
...@@ -13742,10 +13742,9 @@ fn typeHasOnePossibleValue(...@@ -13742,10 +13742,9 @@ fn typeHasOnePossibleValue(
13742 sema: *Sema,13742 sema: *Sema,
13743 block: *Block,13743 block: *Block,
13744 src: LazySrcLoc,13744 src: LazySrcLoc,
13745 starting_type: Type,13745 ty: Type,
13746) CompileError!?Value {13746) CompileError!?Value {
13747 var ty = starting_type;13747 switch (ty.tag()) {
13748 while (true) switch (ty.tag()) {
13749 .f16,13748 .f16,
13750 .f32,13749 .f32,
13751 .f64,13750 .f64,
...@@ -13839,7 +13838,7 @@ fn typeHasOnePossibleValue(...@@ -13839,7 +13838,7 @@ fn typeHasOnePossibleValue(
13839 const enum_obj = resolved_ty.castTag(.enum_numbered).?.data;13838 const enum_obj = resolved_ty.castTag(.enum_numbered).?.data;
13840 if (enum_obj.fields.count() == 1) {13839 if (enum_obj.fields.count() == 1) {
13841 if (enum_obj.values.count() == 0) {13840 if (enum_obj.values.count() == 0) {
13842 return Value.initTag(.zero); // auto-numbered13841 return Value.zero; // auto-numbered
13843 } else {13842 } else {
13844 return enum_obj.values.keys()[0];13843 return enum_obj.values.keys()[0];
13845 }13844 }
...@@ -13852,7 +13851,7 @@ fn typeHasOnePossibleValue(...@@ -13852,7 +13851,7 @@ fn typeHasOnePossibleValue(
13852 const enum_obj = resolved_ty.castTag(.enum_full).?.data;13851 const enum_obj = resolved_ty.castTag(.enum_full).?.data;
13853 if (enum_obj.fields.count() == 1) {13852 if (enum_obj.fields.count() == 1) {
13854 if (enum_obj.values.count() == 0) {13853 if (enum_obj.values.count() == 0) {
13855 return Value.initTag(.zero); // auto-numbered13854 return Value.zero; // auto-numbered
13856 } else {13855 } else {
13857 return enum_obj.values.keys()[0];13856 return enum_obj.values.keys()[0];
13858 }13857 }
...@@ -13864,15 +13863,15 @@ fn typeHasOnePossibleValue(...@@ -13864,15 +13863,15 @@ fn typeHasOnePossibleValue(
13864 const resolved_ty = try sema.resolveTypeFields(block, src, ty);13863 const resolved_ty = try sema.resolveTypeFields(block, src, ty);
13865 const enum_simple = resolved_ty.castTag(.enum_simple).?.data;13864 const enum_simple = resolved_ty.castTag(.enum_simple).?.data;
13866 if (enum_simple.fields.count() == 1) {13865 if (enum_simple.fields.count() == 1) {
13867 return Value.initTag(.zero);13866 return Value.zero;
13868 } else {13867 } else {
13869 return null;13868 return null;
13870 }13869 }
13871 },13870 },
13872 .enum_nonexhaustive => {13871 .enum_nonexhaustive => {
13873 const tag_ty = ty.castTag(.enum_nonexhaustive).?.data.tag_ty;13872 const tag_ty = ty.castTag(.enum_nonexhaustive).?.data.tag_ty;
13874 if (tag_ty.cast(Type.Payload.Bits).?.data == 0) {13873 if (!tag_ty.hasCodeGenBits()) {
13875 return Value.initTag(.zero);13874 return Value.zero;
13876 } else {13875 } else {
13877 return null;13876 return null;
13878 }13877 }
...@@ -13892,7 +13891,7 @@ fn typeHasOnePossibleValue(...@@ -13892,7 +13891,7 @@ fn typeHasOnePossibleValue(
1389213891
13893 .int_unsigned, .int_signed => {13892 .int_unsigned, .int_signed => {
13894 if (ty.cast(Type.Payload.Bits).?.data == 0) {13893 if (ty.cast(Type.Payload.Bits).?.data == 0) {
13895 return Value.initTag(.zero);13894 return Value.zero;
13896 } else {13895 } else {
13897 return null;13896 return null;
13898 }13897 }
...@@ -13900,14 +13899,16 @@ fn typeHasOnePossibleValue(...@@ -13900,14 +13899,16 @@ fn typeHasOnePossibleValue(
13900 .vector, .array, .array_u8 => {13899 .vector, .array, .array_u8 => {
13901 if (ty.arrayLen() == 0)13900 if (ty.arrayLen() == 0)
13902 return Value.initTag(.empty_array);13901 return Value.initTag(.empty_array);
13903 _ = (try sema.typeHasOnePossibleValue(block, src, ty.elemType())) orelse return null;13902 if ((try sema.typeHasOnePossibleValue(block, src, ty.elemType())) != null) {
13904 return Value.initTag(.the_only_possible_value);13903 return Value.initTag(.the_only_possible_value);
13904 }
13905 return null;
13905 },13906 },
1390613907
13907 .inferred_alloc_const => unreachable,13908 .inferred_alloc_const => unreachable,
13908 .inferred_alloc_mut => unreachable,13909 .inferred_alloc_mut => unreachable,
13909 .generic_poison => return error.GenericPoison,13910 .generic_poison => return error.GenericPoison,
13910 };13911 }
13911}13912}
1391213913
13913fn getAstTree(sema: *Sema, block: *Block) CompileError!*const std.zig.Ast {13914fn getAstTree(sema: *Sema, block: *Block) CompileError!*const std.zig.Ast {
src/type.zig+10-9
...@@ -2676,7 +2676,7 @@ pub const Type = extern union {...@@ -2676,7 +2676,7 @@ pub const Type = extern union {
26762676
2677 .pointer => return self.castTag(.pointer).?.data.sentinel,2677 .pointer => return self.castTag(.pointer).?.data.sentinel,
2678 .array_sentinel => return self.castTag(.array_sentinel).?.data.sentinel,2678 .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
2681 else => unreachable,2681 else => unreachable,
2682 };2682 };
...@@ -3115,15 +3115,15 @@ pub const Type = extern union {...@@ -3115,15 +3115,15 @@ pub const Type = extern union {
3115 .enum_simple => {3115 .enum_simple => {
3116 const enum_simple = ty.castTag(.enum_simple).?.data;3116 const enum_simple = ty.castTag(.enum_simple).?.data;
3117 if (enum_simple.fields.count() == 1) {3117 if (enum_simple.fields.count() == 1) {
3118 return Value.initTag(.zero);3118 return Value.zero;
3119 } else {3119 } else {
3120 return null;3120 return null;
3121 }3121 }
3122 },3122 },
3123 .enum_nonexhaustive => {3123 .enum_nonexhaustive => {
3124 const tag_ty = ty.castTag(.enum_nonexhaustive).?.data.tag_ty;3124 const tag_ty = ty.castTag(.enum_nonexhaustive).?.data.tag_ty;
3125 if (tag_ty.cast(Type.Payload.Bits).?.data == 0) {3125 if (!tag_ty.hasCodeGenBits()) {
3126 return Value.initTag(.zero);3126 return Value.zero;
3127 } else {3127 } else {
3128 return null;3128 return null;
3129 }3129 }
...@@ -3143,7 +3143,7 @@ pub const Type = extern union {...@@ -3143,7 +3143,7 @@ pub const Type = extern union {
31433143
3144 .int_unsigned, .int_signed => {3144 .int_unsigned, .int_signed => {
3145 if (ty.cast(Payload.Bits).?.data == 0) {3145 if (ty.cast(Payload.Bits).?.data == 0) {
3146 return Value.initTag(.zero);3146 return Value.zero;
3147 } else {3147 } else {
3148 return null;3148 return null;
3149 }3149 }
...@@ -3151,8 +3151,9 @@ pub const Type = extern union {...@@ -3151,8 +3151,9 @@ pub const Type = extern union {
3151 .vector, .array, .array_u8 => {3151 .vector, .array, .array_u8 => {
3152 if (ty.arrayLen() == 0)3152 if (ty.arrayLen() == 0)
3153 return Value.initTag(.empty_array);3153 return Value.initTag(.empty_array);
3154 _ = ty.elemType().onePossibleValue() orelse return null;3154 if (ty.elemType().onePossibleValue() != null)
3155 return Value.initTag(.the_only_possible_value);3155 return Value.initTag(.the_only_possible_value);
3156 return null;
3156 },3157 },
31573158
3158 .inferred_alloc_const => unreachable,3159 .inferred_alloc_const => unreachable,
...@@ -3193,7 +3194,7 @@ pub const Type = extern union {...@@ -3193,7 +3194,7 @@ pub const Type = extern union {
3193 const info = self.intInfo(target);3194 const info = self.intInfo(target);
31943195
3195 if (info.signedness == .unsigned) {3196 if (info.signedness == .unsigned) {
3196 return Value.initTag(.zero);3197 return Value.zero;
3197 }3198 }
31983199
3199 if (info.bits <= 6) {3200 if (info.bits <= 6) {
...@@ -4027,7 +4028,7 @@ pub const Type = extern union {...@@ -4027,7 +4028,7 @@ pub const Type = extern union {
4027 ) Allocator.Error!Type {4028 ) Allocator.Error!Type {
4028 if (elem_type.eql(Type.u8)) {4029 if (elem_type.eql(Type.u8)) {
4029 if (sent) |some| {4030 if (sent) |some| {
4030 if (some.eql(Value.initTag(.zero), elem_type)) {4031 if (some.eql(Value.zero, elem_type)) {
4031 return Tag.array_u8_sentinel_0.create(arena, len);4032 return Tag.array_u8_sentinel_0.create(arena, len);
4032 }4033 }
4033 } else {4034 } else {