Fix -M and --dep splitting on every = instead of just the first

Before this commit, -Mfoo=bar=baz would be incorrectly split into mod_name: `foo` and root_src_orig: `bar`
After this commit, -Mfoo=bar=baz will be correctly split into mod_name: `foo` and root_src_orig: `bar=baz`

Closes #25059
This commit is contained in:
Ryan Liptak 2025-08-28 04:20:35 -07:00 committed by Andrew Kelley
parent 1ec8a7ab4c
commit bc7955306e

View file

@ -1060,8 +1060,8 @@ fn buildOutputType(
}
} else if (mem.eql(u8, arg, "--dep")) {
var it = mem.splitScalar(u8, args_iter.nextOrFatal(), '=');
const key = it.next().?;
const value = it.next() orelse key;
const key = it.first();
const value = if (it.peek() != null) it.rest() else key;
if (mem.eql(u8, key, "std") and !mem.eql(u8, value, "std")) {
fatal("unable to import as '{s}': conflicts with builtin module", .{
key,
@ -1080,8 +1080,8 @@ fn buildOutputType(
});
} else if (mem.startsWith(u8, arg, "-M")) {
var it = mem.splitScalar(u8, arg["-M".len..], '=');
const mod_name = it.next().?;
const root_src_orig = it.next();
const mod_name = it.first();
const root_src_orig = if (it.peek() != null) it.rest() else null;
try handleModArg(
arena,
mod_name,