aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2021-06-13 20:39:40 -0400
committerGitHub <noreply@github.com>2021-06-13 20:39:40 -0400
commit86ebd4b975d2f1e01f468e06daab6e28c06f9719 (patch)
tree250bfe03e0768bdf7619fa8bb588b6815e1d3f0d /src
parentdf4f11f42f44b4ee2a06e43095bc160277ceed42 (diff)
parente63ff4f1c110165c4b92025cb5b9d5531e861643 (diff)
downloadzig-86ebd4b975d2f1e01f468e06daab6e28c06f9719.tar.gz
zig-86ebd4b975d2f1e01f468e06daab6e28c06f9719.zip
Merge pull request #9106 from Vexu/fmt
Add formatting check to CI pipeline
Diffstat (limited to 'src')
-rw-r--r--src/AstGen.zig10
-rw-r--r--src/clang.zig40
-rw-r--r--src/codegen/llvm/bindings.zig18
-rw-r--r--src/codegen/spirv/spec.zig91
-rw-r--r--src/config.zig.in2
-rw-r--r--src/link/MachO.zig20
-rw-r--r--src/link/MachO/Trie.zig2
-rw-r--r--src/link/MachO/Zld.zig20
-rw-r--r--src/main.zig54
-rw-r--r--src/stage1.zig4
-rw-r--r--src/type.zig6
-rw-r--r--src/windows_sdk.zig2
12 files changed, 149 insertions, 120 deletions
diff --git a/src/AstGen.zig b/src/AstGen.zig
index 374d27c3e6..d7720e7678 100644
--- a/src/AstGen.zig
+++ b/src/AstGen.zig
@@ -59,7 +59,7 @@ fn appendRefsAssumeCapacity(astgen: *AstGen, refs: []const Zir.Inst.Ref) void {
astgen.extra.appendSliceAssumeCapacity(coerced);
}
-pub fn generate(gpa: *Allocator, tree: ast.Tree) InnerError!Zir {
+pub fn generate(gpa: *Allocator, tree: ast.Tree) Allocator.Error!Zir {
var arena = std.heap.ArenaAllocator.init(gpa);
defer arena.deinit();
@@ -662,7 +662,7 @@ fn expr(gz: *GenZir, scope: *Scope, rl: ResultLoc, node: ast.Node.Index) InnerEr
const lhs = try expr(gz, scope, .ref, node_datas[node].lhs);
const extra = tree.extraData(node_datas[node].rhs, ast.Node.SliceSentinel);
const start = try expr(gz, scope, .{ .ty = .usize_type }, extra.start);
- const end = try expr(gz, scope, .{ .ty = .usize_type }, extra.end);
+ const end = if (extra.end != 0) try expr(gz, scope, .{ .ty = .usize_type }, extra.end) else .none;
const sentinel = try expr(gz, scope, .{ .ty = .usize_type }, extra.sentinel);
const result = try gz.addPlNode(.slice_sentinel, node, Zir.Inst.SliceSentinel{
.lhs = lhs,
@@ -3877,6 +3877,10 @@ fn containerDecl(
const node_tags = tree.nodes.items(.tag);
const node_datas = tree.nodes.items(.data);
+ const prev_fn_block = astgen.fn_block;
+ astgen.fn_block = null;
+ defer astgen.fn_block = prev_fn_block;
+
// We must not create any types until Sema. Here the goal is only to generate
// ZIR for all the field types, alignments, and default value expressions.
@@ -3976,7 +3980,7 @@ fn containerDecl(
.nonexhaustive_node = nonexhaustive_node,
};
};
- if (counts.total_fields == 0) {
+ if (counts.total_fields == 0 and counts.nonexhaustive_node == 0) {
// One can construct an enum with no tags, and it functions the same as `noreturn`. But
// this is only useful for generic code; when explicitly using `enum {}` syntax, there
// must be at least one tag.
diff --git a/src/clang.zig b/src/clang.zig
index 4cc82c0ae5..bd305bc76f 100644
--- a/src/clang.zig
+++ b/src/clang.zig
@@ -45,7 +45,7 @@ pub const APValueLValueBase = extern struct {
extern fn ZigClangAPValueLValueBase_dyn_cast_Expr(APValueLValueBase) ?*const Expr;
};
-pub const APValueKind = extern enum {
+pub const APValueKind = enum(c_int) {
None,
Indeterminate,
Int,
@@ -105,7 +105,7 @@ pub const APFloat = opaque {
extern fn ZigClangAPFloat_toString(*const APFloat, precision: c_uint, maxPadding: c_uint, truncateZero: bool) [*:0]const u8;
};
-pub const APFloatBaseSemantics = extern enum {
+pub const APFloatBaseSemantics = enum(c_int) {
IEEEhalf,
BFloat,
IEEEsingle,
@@ -1037,7 +1037,7 @@ pub const InitListExpr = opaque {
extern fn ZigClangInitListExpr_getInitializedFieldInUnion(*const InitListExpr) ?*FieldDecl;
};
-pub const BO = extern enum {
+pub const BO = enum(c_int) {
PtrMemD,
PtrMemI,
Mul,
@@ -1073,7 +1073,7 @@ pub const BO = extern enum {
Comma,
};
-pub const UO = extern enum {
+pub const UO = enum(c_int) {
PostInc,
PostDec,
PreInc,
@@ -1090,7 +1090,7 @@ pub const UO = extern enum {
Coawait,
};
-pub const TypeClass = extern enum {
+pub const TypeClass = enum(c_int) {
Adjusted,
Decayed,
ConstantArray,
@@ -1145,7 +1145,7 @@ pub const TypeClass = extern enum {
ExtVector,
};
-const StmtClass = extern enum {
+const StmtClass = enum(c_int) {
NoStmtClass,
GCCAsmStmtClass,
MSAsmStmtClass,
@@ -1362,7 +1362,7 @@ const StmtClass = extern enum {
WhileStmtClass,
};
-pub const CK = extern enum {
+pub const CK = enum(c_int) {
Dependent,
BitCast,
LValueBitCast,
@@ -1429,7 +1429,7 @@ pub const CK = extern enum {
IntToOCLSampler,
};
-pub const DeclKind = extern enum {
+pub const DeclKind = enum(c_int) {
AccessSpec,
Block,
Captured,
@@ -1513,7 +1513,7 @@ pub const DeclKind = extern enum {
TranslationUnit,
};
-pub const BuiltinTypeKind = extern enum {
+pub const BuiltinTypeKind = enum(c_int) {
OCLImage1dRO,
OCLImage1dArrayRO,
OCLImage1dBufferRO,
@@ -1687,7 +1687,7 @@ pub const BuiltinTypeKind = extern enum {
OMPIterator,
};
-pub const CallingConv = extern enum {
+pub const CallingConv = enum(c_int) {
C,
X86StdCall,
X86FastCall,
@@ -1708,7 +1708,7 @@ pub const CallingConv = extern enum {
AArch64VectorCall,
};
-pub const StorageClass = extern enum {
+pub const StorageClass = enum(c_int) {
None,
Extern,
Static,
@@ -1717,7 +1717,7 @@ pub const StorageClass = extern enum {
Register,
};
-pub const APFloat_roundingMode = extern enum(i8) {
+pub const APFloat_roundingMode = enum(i8) {
TowardZero = 0,
NearestTiesToEven = 1,
TowardPositive = 2,
@@ -1727,7 +1727,7 @@ pub const APFloat_roundingMode = extern enum(i8) {
Invalid = -1,
};
-pub const StringLiteral_StringKind = extern enum {
+pub const StringLiteral_StringKind = enum(c_int) {
Ascii,
Wide,
UTF8,
@@ -1735,7 +1735,7 @@ pub const StringLiteral_StringKind = extern enum {
UTF32,
};
-pub const CharacterLiteral_CharacterKind = extern enum {
+pub const CharacterLiteral_CharacterKind = enum(c_int) {
Ascii,
Wide,
UTF8,
@@ -1743,13 +1743,13 @@ pub const CharacterLiteral_CharacterKind = extern enum {
UTF32,
};
-pub const VarDecl_TLSKind = extern enum {
+pub const VarDecl_TLSKind = enum(c_int) {
None,
Static,
Dynamic,
};
-pub const ElaboratedTypeKeyword = extern enum {
+pub const ElaboratedTypeKeyword = enum(c_int) {
Struct,
Interface,
Union,
@@ -1759,21 +1759,21 @@ pub const ElaboratedTypeKeyword = extern enum {
None,
};
-pub const PreprocessedEntity_EntityKind = extern enum {
+pub const PreprocessedEntity_EntityKind = enum(c_int) {
InvalidKind,
MacroExpansionKind,
MacroDefinitionKind,
InclusionDirectiveKind,
};
-pub const Expr_ConstantExprKind = extern enum {
+pub const Expr_ConstantExprKind = enum(c_int) {
Normal,
NonClassTemplateArgument,
ClassTemplateArgument,
ImmediateInvocation,
};
-pub const UnaryExprOrTypeTrait_Kind = extern enum {
+pub const UnaryExprOrTypeTrait_Kind = enum(c_int) {
SizeOf,
AlignOf,
VecStep,
@@ -1781,7 +1781,7 @@ pub const UnaryExprOrTypeTrait_Kind = extern enum {
PreferredAlignOf,
};
-pub const OffsetOfNode_Kind = extern enum {
+pub const OffsetOfNode_Kind = enum(c_int) {
Array,
Field,
Identifier,
diff --git a/src/codegen/llvm/bindings.zig b/src/codegen/llvm/bindings.zig
index 63ac7e86a0..364b059a87 100644
--- a/src/codegen/llvm/bindings.zig
+++ b/src/codegen/llvm/bindings.zig
@@ -131,7 +131,7 @@ extern fn LLVMLookupIntrinsicID(Name: [*]const u8, NameLen: usize) c_uint;
pub const disposeMessage = LLVMDisposeMessage;
extern fn LLVMDisposeMessage(Message: [*:0]const u8) void;
-pub const VerifierFailureAction = extern enum {
+pub const VerifierFailureAction = enum(c_int) {
AbortProcess,
PrintMessage,
ReturnStatus,
@@ -228,7 +228,7 @@ pub const Builder = opaque {
extern fn LLVMBuildExtractValue(*const Builder, AggVal: *const Value, Index: c_uint, Name: [*:0]const u8) *const Value;
};
-pub const IntPredicate = extern enum {
+pub const IntPredicate = enum(c_int) {
EQ = 32,
NE = 33,
UGT = 34,
@@ -274,7 +274,7 @@ pub const TargetMachine = opaque {
) Bool;
};
-pub const CodeMode = extern enum {
+pub const CodeMode = enum(c_int) {
Default,
JITDefault,
Tiny,
@@ -284,14 +284,14 @@ pub const CodeMode = extern enum {
Large,
};
-pub const CodeGenOptLevel = extern enum {
+pub const CodeGenOptLevel = enum(c_int) {
None,
Less,
Default,
Aggressive,
};
-pub const RelocMode = extern enum {
+pub const RelocMode = enum(c_int) {
Default,
Static,
PIC,
@@ -301,7 +301,7 @@ pub const RelocMode = extern enum {
ROPI_RWPI,
};
-pub const CodeGenFileType = extern enum {
+pub const CodeGenFileType = enum(c_int) {
AssemblyFile,
ObjectFile,
};
@@ -504,7 +504,7 @@ pub const LinkELF = ZigLLDLinkELF;
pub const LinkMachO = ZigLLDLinkMachO;
pub const LinkWasm = ZigLLDLinkWasm;
-pub const ObjectFormatType = extern enum(c_int) {
+pub const ObjectFormatType = enum(c_int) {
Unknown,
COFF,
ELF,
@@ -528,7 +528,7 @@ extern fn ZigLLVMWriteArchive(
os_type: OSType,
) bool;
-pub const OSType = extern enum(c_int) {
+pub const OSType = enum(c_int) {
UnknownOS,
Ananas,
CloudABI,
@@ -567,7 +567,7 @@ pub const OSType = extern enum(c_int) {
Emscripten,
};
-pub const ArchType = extern enum(c_int) {
+pub const ArchType = enum(c_int) {
UnknownArch,
arm,
armeb,
diff --git a/src/codegen/spirv/spec.zig b/src/codegen/spirv/spec.zig
index 227211e4a6..429ed63d23 100644
--- a/src/codegen/spirv/spec.zig
+++ b/src/codegen/spirv/spec.zig
@@ -3,7 +3,7 @@
const Version = @import("std").builtin.Version;
pub const version = Version{ .major = 1, .minor = 5, .patch = 4 };
pub const magic_number: u32 = 0x07230203;
-pub const Opcode = extern enum(u16) {
+pub const Opcode = enum(u16) {
OpNop = 0,
OpUndef = 1,
OpSourceContinued = 2,
@@ -382,12 +382,10 @@ pub const Opcode = extern enum(u16) {
OpGroupNonUniformPartitionNV = 5296,
OpWritePackedPrimitiveIndices4x8NV = 5299,
OpReportIntersectionNV = 5334,
- OpReportIntersectionKHR = 5334,
OpIgnoreIntersectionNV = 5335,
OpTerminateRayNV = 5336,
OpTraceNV = 5337,
OpTypeAccelerationStructureNV = 5341,
- OpTypeAccelerationStructureKHR = 5341,
OpExecuteCallableNV = 5344,
OpTypeCooperativeMatrixNV = 5358,
OpCooperativeMatrixLoadNV = 5359,
@@ -432,9 +430,7 @@ pub const Opcode = extern enum(u16) {
OpAssumeTrueKHR = 5630,
OpExpectKHR = 5631,
OpDecorateString = 5632,
- OpDecorateStringGOOGLE = 5632,
OpMemberDecorateString = 5633,
- OpMemberDecorateStringGOOGLE = 5633,
OpVmeImageINTEL = 5699,
OpTypeVmeImageINTEL = 5700,
OpTypeAvcImePayloadINTEL = 5701,
@@ -585,6 +581,9 @@ pub const Opcode = extern enum(u16) {
OpConstantCompositeContinuedINTEL = 6091,
OpSpecConstantCompositeContinuedINTEL = 6092,
_,
+
+ const OpReportIntersectionKHR = OpReportIntersectionNV;
+ const OpTypeAccelerationStructureKHR = OpTypeAccelerationStructureNV;
};
pub const ImageOperands = packed struct {
Bias: bool align(@alignOf(u32)) = false,
@@ -926,7 +925,7 @@ pub const FragmentShadingRate = packed struct {
_reserved_bit_30: bool = false,
_reserved_bit_31: bool = false,
};
-pub const SourceLanguage = extern enum(u32) {
+pub const SourceLanguage = enum(u32) {
Unknown = 0,
ESSL = 1,
GLSL = 2,
@@ -935,7 +934,7 @@ pub const SourceLanguage = extern enum(u32) {
HLSL = 5,
_,
};
-pub const ExecutionModel = extern enum(u32) {
+pub const ExecutionModel = enum(u32) {
Vertex = 0,
TessellationControl = 1,
TessellationEvaluation = 2,
@@ -959,23 +958,21 @@ pub const ExecutionModel = extern enum(u32) {
CallableKHR = 5318,
_,
};
-pub const AddressingModel = extern enum(u32) {
+pub const AddressingModel = enum(u32) {
Logical = 0,
Physical32 = 1,
Physical64 = 2,
PhysicalStorageBuffer64 = 5348,
- PhysicalStorageBuffer64EXT = 5348,
_,
};
-pub const MemoryModel = extern enum(u32) {
+pub const MemoryModel = enum(u32) {
Simple = 0,
GLSL450 = 1,
OpenCL = 2,
Vulkan = 3,
- VulkanKHR = 3,
_,
};
-pub const ExecutionMode = extern enum(u32) {
+pub const ExecutionMode = enum(u32) {
Invocations = 0,
SpacingEqual = 1,
SpacingFractionalEven = 2,
@@ -1044,7 +1041,7 @@ pub const ExecutionMode = extern enum(u32) {
SchedulerTargetFmaxMhzINTEL = 5903,
_,
};
-pub const StorageClass = extern enum(u32) {
+pub const StorageClass = enum(u32) {
UniformConstant = 0,
Input = 1,
Uniform = 2,
@@ -1058,26 +1055,19 @@ pub const StorageClass = extern enum(u32) {
AtomicCounter = 10,
Image = 11,
StorageBuffer = 12,
- CallableDataNV = 5328,
CallableDataKHR = 5328,
- IncomingCallableDataNV = 5329,
IncomingCallableDataKHR = 5329,
- RayPayloadNV = 5338,
RayPayloadKHR = 5338,
- HitAttributeNV = 5339,
HitAttributeKHR = 5339,
- IncomingRayPayloadNV = 5342,
IncomingRayPayloadKHR = 5342,
- ShaderRecordBufferNV = 5343,
ShaderRecordBufferKHR = 5343,
PhysicalStorageBuffer = 5349,
- PhysicalStorageBufferEXT = 5349,
CodeSectionINTEL = 5605,
DeviceOnlyINTEL = 5936,
HostOnlyINTEL = 5937,
_,
};
-pub const Dim = extern enum(u32) {
+pub const Dim = enum(u32) {
@"1D" = 0,
@"2D" = 1,
@"3D" = 2,
@@ -1087,7 +1077,7 @@ pub const Dim = extern enum(u32) {
SubpassData = 6,
_,
};
-pub const SamplerAddressingMode = extern enum(u32) {
+pub const SamplerAddressingMode = enum(u32) {
None = 0,
ClampToEdge = 1,
Clamp = 2,
@@ -1095,12 +1085,12 @@ pub const SamplerAddressingMode = extern enum(u32) {
RepeatMirrored = 4,
_,
};
-pub const SamplerFilterMode = extern enum(u32) {
+pub const SamplerFilterMode = enum(u32) {
Nearest = 0,
Linear = 1,
_,
};
-pub const ImageFormat = extern enum(u32) {
+pub const ImageFormat = enum(u32) {
Unknown = 0,
Rgba32f = 1,
Rgba16f = 2,
@@ -1145,7 +1135,7 @@ pub const ImageFormat = extern enum(u32) {
R64i = 41,
_,
};
-pub const ImageChannelOrder = extern enum(u32) {
+pub const ImageChannelOrder = enum(u32) {
R = 0,
A = 1,
RG = 2,
@@ -1168,7 +1158,7 @@ pub const ImageChannelOrder = extern enum(u32) {
ABGR = 19,
_,
};
-pub const ImageChannelDataType = extern enum(u32) {
+pub const ImageChannelDataType = enum(u32) {
SnormInt8 = 0,
SnormInt16 = 1,
UnormInt8 = 2,
@@ -1188,36 +1178,36 @@ pub const ImageChannelDataType = extern enum(u32) {
UnormInt101010_2 = 16,
_,
};
-pub const FPRoundingMode = extern enum(u32) {
+pub const FPRoundingMode = enum(u32) {
RTE = 0,
RTZ = 1,
RTP = 2,
RTN = 3,
_,
};
-pub const FPDenormMode = extern enum(u32) {
+pub const FPDenormMode = enum(u32) {
Preserve = 0,
FlushToZero = 1,
_,
};
-pub const FPOperationMode = extern enum(u32) {
+pub const FPOperationMode = enum(u32) {
IEEE = 0,
ALT = 1,
_,
};
-pub const LinkageType = extern enum(u32) {
+pub const LinkageType = enum(u32) {
Export = 0,
Import = 1,
LinkOnceODR = 2,
_,
};
-pub const AccessQualifier = extern enum(u32) {
+pub const AccessQualifier = enum(u32) {
ReadOnly = 0,
WriteOnly = 1,
ReadWrite = 2,
_,
};
-pub const FunctionParameterAttribute = extern enum(u32) {
+pub const FunctionParameterAttribute = enum(u32) {
Zext = 0,
Sext = 1,
ByVal = 2,
@@ -1228,7 +1218,7 @@ pub const FunctionParameterAttribute = extern enum(u32) {
NoReadWrite = 7,
_,
};
-pub const Decoration = extern enum(u32) {
+pub const Decoration = enum(u32) {
RelaxedPrecision = 0,
SpecId = 1,
Block = 2,
@@ -1334,7 +1324,7 @@ pub const Decoration = extern enum(u32) {
VectorComputeCallableFunctionINTEL = 6087,
_,
};
-pub const BuiltIn = extern enum(u32) {
+pub const BuiltIn = enum(u32) {
Position = 0,
PointSize = 1,
ClipDistance = 3,
@@ -1455,7 +1445,7 @@ pub const BuiltIn = extern enum(u32) {
SMIDNV = 5377,
_,
};
-pub const Scope = extern enum(u32) {
+pub const Scope = enum(u32) {
CrossDevice = 0,
Device = 1,
Workgroup = 2,
@@ -1466,7 +1456,7 @@ pub const Scope = extern enum(u32) {
ShaderCallKHR = 6,
_,
};
-pub const GroupOperation = extern enum(u32) {
+pub const GroupOperation = enum(u32) {
Reduce = 0,
InclusiveScan = 1,
ExclusiveScan = 2,
@@ -1476,13 +1466,13 @@ pub const GroupOperation = extern enum(u32) {
PartitionedExclusiveScanNV = 8,
_,
};
-pub const KernelEnqueueFlags = extern enum(u32) {
+pub const KernelEnqueueFlags = enum(u32) {
NoWait = 0,
WaitKernel = 1,
WaitWorkGroup = 2,
_,
};
-pub const Capability = extern enum(u32) {
+pub const Capability = enum(u32) {
Matrix = 0,
Shader = 1,
Geometry = 2,
@@ -1560,8 +1550,6 @@ pub const Capability = extern enum(u32) {
WorkgroupMemoryExplicitLayout16BitAccessKHR = 4430,
SubgroupVoteKHR = 4431,
StorageBuffer16BitAccess = 4433,
- StorageUniformBufferBlock16 = 4433,
- UniformAndStorageBuffer16BitAccess = 4434,
StorageUniform16 = 4434,
StoragePushConstant16 = 4435,
StorageInputOutput16 = 4436,
@@ -1592,7 +1580,6 @@ pub const Capability = extern enum(u32) {
ShaderClockKHR = 5055,
SampleMaskOverrideCoverageNV = 5249,
GeometryShaderPassthroughNV = 5251,
- ShaderViewportIndexLayerEXT = 5254,
ShaderViewportIndexLayerNV = 5254,
ShaderViewportMaskNV = 5255,
ShaderStereoViewNV = 5259,
@@ -1602,40 +1589,24 @@ pub const Capability = extern enum(u32) {
ImageFootprintNV = 5282,
FragmentBarycentricNV = 5284,
ComputeDerivativeGroupQuadsNV = 5288,
- FragmentDensityEXT = 5291,
ShadingRateNV = 5291,
GroupNonUniformPartitionedNV = 5297,
ShaderNonUniform = 5301,
- ShaderNonUniformEXT = 5301,
RuntimeDescriptorArray = 5302,
- RuntimeDescriptorArrayEXT = 5302,
InputAttachmentArrayDynamicIndexing = 5303,
- InputAttachmentArrayDynamicIndexingEXT = 5303,
UniformTexelBufferArrayDynamicIndexing = 5304,
- UniformTexelBufferArrayDynamicIndexingEXT = 5304,
StorageTexelBufferArrayDynamicIndexing = 5305,
- StorageTexelBufferArrayDynamicIndexingEXT = 5305,
UniformBufferArrayNonUniformIndexing = 5306,
- UniformBufferArrayNonUniformIndexingEXT = 5306,
SampledImageArrayNonUniformIndexing = 5307,
- SampledImageArrayNonUniformIndexingEXT = 5307,
StorageBufferArrayNonUniformIndexing = 5308,
- StorageBufferArrayNonUniformIndexingEXT = 5308,
StorageImageArrayNonUniformIndexing = 5309,
- StorageImageArrayNonUniformIndexingEXT = 5309,
InputAttachmentArrayNonUniformIndexing = 5310,
- InputAttachmentArrayNonUniformIndexingEXT = 5310,
UniformTexelBufferArrayNonUniformIndexing = 5311,
- UniformTexelBufferArrayNonUniformIndexingEXT = 5311,
StorageTexelBufferArrayNonUniformIndexing = 5312,
- StorageTexelBufferArrayNonUniformIndexingEXT = 5312,
RayTracingNV = 5340,
VulkanMemoryModel = 5345,
- VulkanMemoryModelKHR = 5345,
VulkanMemoryModelDeviceScope = 5346,
- VulkanMemoryModelDeviceScopeKHR = 5346,
PhysicalStorageBufferAddresses = 5347,
- PhysicalStorageBufferAddressesEXT = 5347,
ComputeDerivativeGroupLinearNV = 5350,
RayTracingProvisionalKHR = 5353,
CooperativeMatrixNV = 5357,
@@ -1685,18 +1656,18 @@ pub const Capability = extern enum(u32) {
LongConstantCompositeINTEL = 6089,
_,
};
-pub const RayQueryIntersection = extern enum(u32) {
+pub const RayQueryIntersection = enum(u32) {
RayQueryCandidateIntersectionKHR = 0,
RayQueryCommittedIntersectionKHR = 1,
_,
};
-pub const RayQueryCommittedIntersectionType = extern enum(u32) {
+pub const RayQueryCommittedIntersectionType = enum(u32) {
RayQueryCommittedIntersectionNoneKHR = 0,
RayQueryCommittedIntersectionTriangleKHR = 1,
RayQueryCommittedIntersectionGeneratedKHR = 2,
_,
};
-pub const RayQueryCandidateIntersectionType = extern enum(u32) {
+pub const RayQueryCandidateIntersectionType = enum(u32) {
RayQueryCandidateIntersectionTriangleKHR = 0,
RayQueryCandidateIntersectionAABBKHR = 1,
_,
diff --git a/src/config.zig.in b/src/config.zig.in
index 38dbf6a4d1..1bd1b35505 100644
--- a/src/config.zig.in
+++ b/src/config.zig.in
@@ -1,6 +1,6 @@
pub const have_llvm = true;
pub const version: [:0]const u8 = "@ZIG_VERSION@";
-pub const semver = try @import("std").SemanticVersion.parse(version);
+pub const semver = @import("std").SemanticVersion.parse(version) catch unreachable;
pub const enable_logging: bool = @ZIG_ENABLE_LOGGING_BOOL@;
pub const enable_tracy = false;
pub const is_stage1 = true;
diff --git a/src/link/MachO.zig b/src/link/MachO.zig
index 4f9ee0587b..4de1708ff8 100644
--- a/src/link/MachO.zig
+++ b/src/link/MachO.zig
@@ -2700,7 +2700,7 @@ fn writeStubHelperPreamble(self: *MachO) !void {
const this_addr = stub_helper.addr;
const target_addr = data.addr;
data_blk: {
- const displacement = math.cast(i21, target_addr - this_addr) catch |_| break :data_blk;
+ const displacement = math.cast(i21, target_addr - this_addr) catch break :data_blk;
// adr x17, disp
mem.writeIntLittle(u32, code[0..4], aarch64.Instruction.adr(.x17, displacement).toU32());
// nop
@@ -2709,7 +2709,7 @@ fn writeStubHelperPreamble(self: *MachO) !void {
}
data_blk: {
const new_this_addr = this_addr + @sizeOf(u32);
- const displacement = math.cast(i21, target_addr - new_this_addr) catch |_| break :data_blk;
+ const displacement = math.cast(i21, target_addr - new_this_addr) catch break :data_blk;
// nop
mem.writeIntLittle(u32, code[0..4], aarch64.Instruction.nop().toU32());
// adr x17, disp
@@ -2738,8 +2738,8 @@ fn writeStubHelperPreamble(self: *MachO) !void {
const this_addr = stub_helper.addr + 3 * @sizeOf(u32);
const target_addr = got.addr;
binder_blk: {
- const displacement = math.divExact(u64, target_addr - this_addr, 4) catch |_| break :binder_blk;
- const literal = math.cast(u18, displacement) catch |_| break :binder_blk;
+ const displacement = math.divExact(u64, target_addr - this_addr, 4) catch break :binder_blk;
+ const literal = math.cast(u18, displacement) catch break :binder_blk;
// ldr x16, label
mem.writeIntLittle(u32, code[12..16], aarch64.Instruction.ldr(.x16, .{
.literal = literal,
@@ -2750,8 +2750,8 @@ fn writeStubHelperPreamble(self: *MachO) !void {
}
binder_blk: {
const new_this_addr = this_addr + @sizeOf(u32);
- const displacement = math.divExact(u64, target_addr - new_this_addr, 4) catch |_| break :binder_blk;
- const literal = math.cast(u18, displacement) catch |_| break :binder_blk;
+ const displacement = math.divExact(u64, target_addr - new_this_addr, 4) catch break :binder_blk;
+ const literal = math.cast(u18, displacement) catch break :binder_blk;
// nop
mem.writeIntLittle(u32, code[12..16], aarch64.Instruction.nop().toU32());
// ldr x16, label
@@ -2816,8 +2816,8 @@ fn writeStub(self: *MachO, index: u32) !void {
const this_addr = stub_addr;
const target_addr = la_ptr_addr;
inner: {
- const displacement = math.divExact(u64, target_addr - this_addr, 4) catch |_| break :inner;
- const literal = math.cast(u18, displacement) catch |_| break :inner;
+ const displacement = math.divExact(u64, target_addr - this_addr, 4) catch break :inner;
+ const literal = math.cast(u18, displacement) catch break :inner;
// ldr x16, literal
mem.writeIntLittle(u32, code[0..4], aarch64.Instruction.ldr(.x16, .{
.literal = literal,
@@ -2828,8 +2828,8 @@ fn writeStub(self: *MachO, index: u32) !void {
}
inner: {
const new_this_addr = this_addr + @sizeOf(u32);
- const displacement = math.divExact(u64, target_addr - new_this_addr, 4) catch |_| break :inner;
- const literal = math.cast(u18, displacement) catch |_| break :inner;
+ const displacement = math.divExact(u64, target_addr - new_this_addr, 4) catch break :inner;
+ const literal = math.cast(u18, displacement) catch break :inner;
// nop
mem.writeIntLittle(u32, code[0..4], aarch64.Instruction.nop().toU32());
// ldr x16, literal
diff --git a/src/link/MachO/Trie.zig b/src/link/MachO/Trie.zig
index 379b10e2d8..9ef1e486e1 100644
--- a/src/link/MachO/Trie.zig
+++ b/src/link/MachO/Trie.zig
@@ -334,7 +334,7 @@ pub fn finalize(self: *Trie) !void {
self.ordered_nodes.shrinkRetainingCapacity(0);
try self.ordered_nodes.ensureCapacity(self.allocator, self.node_count);
- comptime const Fifo = std.fifo.LinearFifo(*Node, .{ .Static = std.math.maxInt(u8) });
+ const Fifo = std.fifo.LinearFifo(*Node, .{ .Static = std.math.maxInt(u8) });
var fifo = Fifo.init();
try fifo.writeItem(self.root.?);
diff --git a/src/link/MachO/Zld.zig b/src/link/MachO/Zld.zig
index dd957f1a4a..824ea1bb56 100644
--- a/src/link/MachO/Zld.zig
+++ b/src/link/MachO/Zld.zig
@@ -1305,7 +1305,7 @@ fn writeStubHelperCommon(self: *Zld) !void {
const this_addr = stub_helper.addr;
const target_addr = data.addr + data.size - @sizeOf(u64);
data_blk: {
- const displacement = math.cast(i21, target_addr - this_addr) catch |_| break :data_blk;
+ const displacement = math.cast(i21, target_addr - this_addr) catch break :data_blk;
// adr x17, disp
mem.writeIntLittle(u32, code[0..4], aarch64.Instruction.adr(.x17, displacement).toU32());
// nop
@@ -1314,7 +1314,7 @@ fn writeStubHelperCommon(self: *Zld) !void {
}
data_blk: {
const new_this_addr = this_addr + @sizeOf(u32);
- const displacement = math.cast(i21, target_addr - new_this_addr) catch |_| break :data_blk;
+ const displacement = math.cast(i21, target_addr - new_this_addr) catch break :data_blk;
// nop
mem.writeIntLittle(u32, code[0..4], aarch64.Instruction.nop().toU32());
// adr x17, disp
@@ -1339,8 +1339,8 @@ fn writeStubHelperCommon(self: *Zld) !void {
const this_addr = stub_helper.addr + 3 * @sizeOf(u32);
const target_addr = (got.addr + dyld_stub_binder.got_index.? * @sizeOf(u64));
binder_blk: {
- const displacement = math.divExact(u64, target_addr - this_addr, 4) catch |_| break :binder_blk;
- const literal = math.cast(u18, displacement) catch |_| break :binder_blk;
+ const displacement = math.divExact(u64, target_addr - this_addr, 4) catch break :binder_blk;
+ const literal = math.cast(u18, displacement) catch break :binder_blk;
// ldr x16, label
mem.writeIntLittle(u32, code[12..16], aarch64.Instruction.ldr(.x16, .{
.literal = literal,
@@ -1351,8 +1351,8 @@ fn writeStubHelperCommon(self: *Zld) !void {
}
binder_blk: {
const new_this_addr = this_addr + @sizeOf(u32);
- const displacement = math.divExact(u64, target_addr - new_this_addr, 4) catch |_| break :binder_blk;
- const literal = math.cast(u18, displacement) catch |_| break :binder_blk;
+ const displacement = math.divExact(u64, target_addr - new_this_addr, 4) catch break :binder_blk;
+ const literal = math.cast(u18, displacement) catch break :binder_blk;
// Pad with nop to please division.
// nop
mem.writeIntLittle(u32, code[12..16], aarch64.Instruction.nop().toU32());
@@ -1444,8 +1444,8 @@ fn writeStub(self: *Zld, index: u32) !void {
const this_addr = stub_addr;
const target_addr = la_ptr_addr;
inner: {
- const displacement = math.divExact(u64, target_addr - this_addr, 4) catch |_| break :inner;
- const literal = math.cast(u18, displacement) catch |_| break :inner;
+ const displacement = math.divExact(u64, target_addr - this_addr, 4) catch break :inner;
+ const literal = math.cast(u18, displacement) catch break :inner;
// ldr x16, literal
mem.writeIntLittle(u32, code[0..4], aarch64.Instruction.ldr(.x16, .{
.literal = literal,
@@ -1456,8 +1456,8 @@ fn writeStub(self: *Zld, index: u32) !void {
}
inner: {
const new_this_addr = this_addr + @sizeOf(u32);
- const displacement = math.divExact(u64, target_addr - new_this_addr, 4) catch |_| break :inner;
- const literal = math.cast(u18, displacement) catch |_| break :inner;
+ const displacement = math.divExact(u64, target_addr - new_this_addr, 4) catch break :inner;
+ const literal = math.cast(u18, displacement) catch break :inner;
// nop
mem.writeIntLittle(u32, code[0..4], aarch64.Instruction.nop().toU32());
// ldr x16, literal
diff --git a/src/main.zig b/src/main.zig
index 081b9ac335..512828bd77 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -2923,6 +2923,7 @@ pub const usage_fmt =
\\ --stdin Format code from stdin; output to stdout
\\ --check List non-conforming files and exit with an error
\\ if the list is non-empty
+ \\ --ast-check Run zig ast-check on every file
\\
\\
;
@@ -2930,6 +2931,7 @@ pub const usage_fmt =
const Fmt = struct {
seen: SeenMap,
any_error: bool,
+ check_ast: bool,
color: Color,
gpa: *Allocator,
out_buffer: std.ArrayList(u8),
@@ -2942,6 +2944,7 @@ pub fn cmdFmt(gpa: *Allocator, args: []const []const u8) !void {
var color: Color = .auto;
var stdin_flag: bool = false;
var check_flag: bool = false;
+ var check_ast_flag: bool = false;
var input_files = ArrayList([]const u8).init(gpa);
defer input_files.deinit();
@@ -2967,6 +2970,8 @@ pub fn cmdFmt(gpa: *Allocator, args: []const []const u8) !void {
stdin_flag = true;
} else if (mem.eql(u8, arg, "--check")) {
check_flag = true;
+ } else if (mem.eql(u8, arg, "--ast-check")) {
+ check_ast_flag = true;
} else {
fatal("unrecognized parameter: '{s}'", .{arg});
}
@@ -3017,6 +3022,7 @@ pub fn cmdFmt(gpa: *Allocator, args: []const []const u8) !void {
.gpa = gpa,
.seen = Fmt.SeenMap.init(gpa),
.any_error = false,
+ .check_ast = check_ast_flag,
.color = color,
.out_buffer = std.ArrayList(u8).init(gpa),
};
@@ -3085,7 +3091,7 @@ fn fmtPathDir(
while (try dir_it.next()) |entry| {
const is_dir = entry.kind == .Directory;
- if (is_dir and std.mem.eql(u8, entry.name, "zig-cache")) continue;
+ if (is_dir and (mem.eql(u8, entry.name, "zig-cache") or mem.eql(u8, entry.name, "zig-out"))) continue;
if (is_dir or mem.endsWith(u8, entry.name, ".zig")) {
const full_path = try fs.path.join(fmt.gpa, &[_][]const u8{ file_path, entry.name });
@@ -3144,6 +3150,52 @@ fn fmtPathFile(
return;
}
+ if (fmt.check_ast) {
+ const Module = @import("Module.zig");
+ const AstGen = @import("AstGen.zig");
+
+ var file: Module.Scope.File = .{
+ .status = .never_loaded,
+ .source_loaded = true,
+ .zir_loaded = false,
+ .sub_file_path = file_path,
+ .source = source_code,
+ .stat_size = stat.size,
+ .stat_inode = stat.inode,
+ .stat_mtime = stat.mtime,
+ .tree = tree,
+ .tree_loaded = true,
+ .zir = undefined,
+ .pkg = undefined,
+ .root_decl = null,
+ };
+
+ if (stat.size > max_src_size)
+ return error.FileTooBig;
+
+ file.zir = try AstGen.generate(fmt.gpa, file.tree);
+ file.zir_loaded = true;
+ defer file.zir.deinit(fmt.gpa);
+
+ if (file.zir.hasCompileErrors()) {
+ var arena_instance = std.heap.ArenaAllocator.init(fmt.gpa);
+ defer arena_instance.deinit();
+ var errors = std.ArrayList(Compilation.AllErrors.Message).init(fmt.gpa);
+ defer errors.deinit();
+
+ try Compilation.AllErrors.addZir(&arena_instance.allocator, &errors, &file);
+ const ttyconf: std.debug.TTY.Config = switch (fmt.color) {
+ .auto => std.debug.detectTTYConfig(),
+ .on => .escape_codes,
+ .off => .no_color,
+ };
+ for (errors.items) |full_err_msg| {
+ full_err_msg.renderToStdErr(ttyconf);
+ }
+ fmt.any_error = true;
+ }
+ }
+
// As a heuristic, we make enough capacity for the same as the input source.
fmt.out_buffer.shrinkRetainingCapacity(0);
try fmt.out_buffer.ensureCapacity(source_code.len);
diff --git a/src/stage1.zig b/src/stage1.zig
index fc7b86e727..91e7cd8bed 100644
--- a/src/stage1.zig
+++ b/src/stage1.zig
@@ -58,7 +58,7 @@ pub const OS = c_int;
/// Matches std.builtin.BuildMode
pub const BuildMode = c_int;
-pub const TargetSubsystem = extern enum(c_int) {
+pub const TargetSubsystem = enum(c_int) {
Console,
Windows,
Posix,
@@ -171,7 +171,7 @@ export fn stage2_panic(ptr: [*]const u8, len: usize) void {
}
// ABI warning
-const Error = extern enum {
+const Error = enum(c_int) {
None,
OutOfMemory,
InvalidFormat,
diff --git a/src/type.zig b/src/type.zig
index 3e6c810b20..410773b649 100644
--- a/src/type.zig
+++ b/src/type.zig
@@ -6,6 +6,8 @@ const Target = std.Target;
const Module = @import("Module.zig");
const log = std.log.scoped(.Type);
+const file_struct = @This();
+
/// This is the raw data, with no bookkeeping, no memory awareness, no de-duplication.
/// It's important for this type to be small.
/// Types are not de-duplicated, which helps with multi-threading since it obviates the requirement
@@ -3000,12 +3002,12 @@ pub const Type = extern union {
};
}
- pub fn init(comptime t: Tag) Type {
+ pub fn init(comptime t: Tag) file_struct.Type {
comptime std.debug.assert(@enumToInt(t) < Tag.no_payload_count);
return .{ .tag_if_small_enough = @enumToInt(t) };
}
- pub fn create(comptime t: Tag, ally: *Allocator, data: Data(t)) error{OutOfMemory}!Type {
+ pub fn create(comptime t: Tag, ally: *Allocator, data: Data(t)) error{OutOfMemory}!file_struct.Type {
const ptr = try ally.create(t.Type());
ptr.* = .{
.base = .{ .tag = t },
diff --git a/src/windows_sdk.zig b/src/windows_sdk.zig
index 6dfdeb99fd..ca69ff4548 100644
--- a/src/windows_sdk.zig
+++ b/src/windows_sdk.zig
@@ -12,7 +12,7 @@ pub const ZigWindowsSDK = extern struct {
msvc_lib_dir_ptr: ?[*]const u8,
msvc_lib_dir_len: usize,
};
-pub const ZigFindWindowsSdkError = extern enum {
+pub const ZigFindWindowsSdkError = enum(c_int) {
None,
OutOfMemory,
NotFound,