Skip to content

Commit ac120d9

Browse files
committed
fix(add): Be consistent in parse errors between toml/toml_mut
1 parent fe18c7f commit ac120d9

File tree

1 file changed

+69
-73
lines changed

1 file changed

+69
-73
lines changed

src/cargo/util/toml_mut/dependency.rs

Lines changed: 69 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -245,91 +245,87 @@ impl Dependency {
245245
(key.to_owned(), None)
246246
};
247247

248-
let source: Source = if let Some(git) = table.get("git") {
249-
let mut src = GitSource::new(
250-
git.as_str()
251-
.ok_or_else(|| invalid_type(key, "git", git.type_name(), "string"))?,
252-
);
253-
if let Some(value) = table.get("branch") {
254-
src =
255-
src.set_branch(value.as_str().ok_or_else(|| {
248+
let source: Source =
249+
if let Some(git) = table.get("git") {
250+
let mut src = GitSource::new(
251+
git.as_str()
252+
.ok_or_else(|| invalid_type(key, "git", git.type_name(), "string"))?,
253+
);
254+
if let Some(value) = table.get("branch") {
255+
src = src.set_branch(value.as_str().ok_or_else(|| {
256256
invalid_type(key, "branch", value.type_name(), "string")
257257
})?);
258-
}
259-
if let Some(value) = table.get("tag") {
260-
src =
261-
src.set_tag(value.as_str().ok_or_else(|| {
258+
}
259+
if let Some(value) = table.get("tag") {
260+
src = src.set_tag(value.as_str().ok_or_else(|| {
262261
invalid_type(key, "tag", value.type_name(), "string")
263262
})?);
264-
}
265-
if let Some(value) = table.get("rev") {
266-
src =
267-
src.set_rev(value.as_str().ok_or_else(|| {
263+
}
264+
if let Some(value) = table.get("rev") {
265+
src = src.set_rev(value.as_str().ok_or_else(|| {
268266
invalid_type(key, "rev", value.type_name(), "string")
269267
})?);
270-
}
271-
if let Some(value) = table.get("version") {
272-
src = src.set_version(value.as_str().ok_or_else(|| {
273-
invalid_type(key, "version", value.type_name(), "string")
274-
})?);
275-
}
276-
src.into()
277-
} else if let Some(path) = table.get("path") {
278-
let base = table
279-
.get("base")
280-
.map(|base| {
281-
base.as_str()
282-
.ok_or_else(|| invalid_type(key, "base", base.type_name(), "string"))
283-
.map(|s| s.to_owned())
284-
})
285-
.transpose()?;
286-
let relative_to = if let Some(base) = &base {
287-
Cow::Owned(lookup_path_base(
288-
&PathBaseName::new(base.clone())?,
289-
gctx,
290-
&|| Ok(workspace_root),
291-
unstable_features,
292-
)?)
293-
} else {
294-
Cow::Borrowed(crate_root)
295-
};
296-
let path =
297-
relative_to
268+
}
269+
if let Some(value) = table.get("version") {
270+
src = src.set_version(value.as_str().ok_or_else(|| {
271+
invalid_type(key, "version", value.type_name(), "string")
272+
})?);
273+
}
274+
src.into()
275+
} else if let Some(path) = table.get("path") {
276+
let base = table
277+
.get("base")
278+
.map(|base| {
279+
base.as_str()
280+
.ok_or_else(|| {
281+
invalid_type(key, "base", base.type_name(), "string")
282+
})
283+
.map(|s| s.to_owned())
284+
})
285+
.transpose()?;
286+
let relative_to = if let Some(base) = &base {
287+
Cow::Owned(lookup_path_base(
288+
&PathBaseName::new(base.clone())?,
289+
gctx,
290+
&|| Ok(workspace_root),
291+
unstable_features,
292+
)?)
293+
} else {
294+
Cow::Borrowed(crate_root)
295+
};
296+
let path = relative_to
298297
.join(path.as_str().ok_or_else(|| {
299298
invalid_type(key, "path", path.type_name(), "string")
300299
})?);
301-
let mut src = PathSource::new(path);
302-
src.base = base;
303-
if let Some(value) = table.get("version") {
304-
src = src.set_version(value.as_str().ok_or_else(|| {
305-
invalid_type(key, "version", value.type_name(), "string")
306-
})?);
307-
}
308-
src.into()
309-
} else if let Some(version) = table.get("version") {
310-
let src =
311-
RegistrySource::new(version.as_str().ok_or_else(|| {
300+
let mut src = PathSource::new(path);
301+
src.base = base;
302+
if let Some(value) = table.get("version") {
303+
src = src.set_version(value.as_str().ok_or_else(|| {
304+
invalid_type(key, "version", value.type_name(), "string")
305+
})?);
306+
}
307+
src.into()
308+
} else if let Some(version) = table.get("version") {
309+
let src = RegistrySource::new(version.as_str().ok_or_else(|| {
312310
invalid_type(key, "version", version.type_name(), "string")
313311
})?);
314-
src.into()
315-
} else if let Some(workspace) = table.get("workspace") {
316-
let workspace_bool = workspace
317-
.as_bool()
318-
.ok_or_else(|| invalid_type(key, "workspace", workspace.type_name(), "bool"))?;
319-
if !workspace_bool {
320-
anyhow::bail!("`{key}.workspace = false` is unsupported")
321-
}
322-
let src = WorkspaceSource::new();
323-
src.into()
324-
} else {
325-
let mut msg = format!("unrecognized dependency source for `{key}`");
326-
if table.is_empty() {
327-
msg.push_str(
328-
", expected a local path, Git repository, version, or workspace dependency to be specified",
312+
src.into()
313+
} else if let Some(workspace) = table.get("workspace") {
314+
let workspace_bool = workspace.as_bool().ok_or_else(|| {
315+
invalid_type(key, "workspace", workspace.type_name(), "bool")
316+
})?;
317+
if !workspace_bool {
318+
anyhow::bail!("`{key}.workspace = false` is unsupported")
319+
}
320+
let src = WorkspaceSource::new();
321+
src.into()
322+
} else {
323+
anyhow::bail!(
324+
"dependency ({key}) specified without \
325+
providing a local path, Git repository, version, or \
326+
workspace dependency to use"
329327
);
330-
}
331-
anyhow::bail!(msg);
332-
};
328+
};
333329
let registry = if let Some(value) = table.get("registry") {
334330
Some(
335331
value

0 commit comments

Comments
 (0)