aboutsummaryrefslogtreecommitdiff
path: root/src/Compilation
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2023-12-24 19:20:03 -0700
committerAndrew Kelley <andrew@ziglang.org>2024-01-01 17:51:21 -0700
commit41ab64c3eb7a104e78ca96cfe861a03f3a150d47 (patch)
tree357286a9f8e5b282497595d4082e388169256928 /src/Compilation
parent8cf2cfc52c23fec8de2fa8ca54c2589daed2135b (diff)
downloadzig-41ab64c3eb7a104e78ca96cfe861a03f3a150d47.tar.gz
zig-41ab64c3eb7a104e78ca96cfe861a03f3a150d47.zip
Compilation.Config.resolve: explicit error set
Some logic has comptime-known conditions, causing the inferred error set to be different on different compiler build configurations.
Diffstat (limited to 'src/Compilation')
-rw-r--r--src/Compilation/Config.zig34
1 files changed, 33 insertions, 1 deletions
diff --git a/src/Compilation/Config.zig b/src/Compilation/Config.zig
index fc4b774baa..4abc27029d 100644
--- a/src/Compilation/Config.zig
+++ b/src/Compilation/Config.zig
@@ -99,7 +99,39 @@ pub const Options = struct {
rdynamic: ?bool = null,
};
-pub fn resolve(options: Options) !Config {
+pub const ResolveError = error{
+ WasiExecModelRequiresWasi,
+ SharedMemoryIsWasmOnly,
+ ObjectFilesCannotShareMemory,
+ SharedMemoryRequiresAtomicsAndBulkMemory,
+ ThreadsRequireSharedMemory,
+ UnknownTargetEntryPoint,
+ NonExecutableEntryPoint,
+ EmittingLlvmModuleRequiresLlvmBackend,
+ LlvmLacksTargetSupport,
+ ZigLacksTargetSupport,
+ EmittingBinaryRequiresLlvmLibrary,
+ LldIncompatibleObjectFormat,
+ LtoRequiresLld,
+ SanitizeThreadRequiresLibCpp,
+ LibCppRequiresLibUnwind,
+ OsRequiresLibC,
+ LibCppRequiresLibC,
+ LibUnwindRequiresLibC,
+ TargetCannotDynamicLink,
+ LibCRequiresDynamicLinking,
+ SharedLibrariesRequireDynamicLinking,
+ ExportMemoryAndDynamicIncompatible,
+ DynamicLibraryPrecludesPie,
+ TargetRequiresPie,
+ SanitizeThreadRequiresPie,
+ BackendLacksErrorTracing,
+ LlvmLibraryUnavailable,
+ LldUnavailable,
+ ClangUnavailable,
+};
+
+pub fn resolve(options: Options) ResolveError!Config {
const target = options.resolved_target.result;
// WASI-only. Resolve the optional exec-model option, defaults to command.