Skip to content

Commit

Permalink
Stop using old version of syn in rustc-workspace-hack
Browse files Browse the repository at this point in the history
None of the tools seem to need syn 0.15.35, so we can just build syn
1.0.

This was causing an issue with clippy's `compile-test` program: since
multiple versions of `syn` would exist in the build directory, we would
non-deterministically pick one based on filesystem iteration order. If
the pre-1.0 version of `syn` was picked, a strange build error would
occur (see
#73594 (comment))

To prevent this kind of issue from happening again, we now panic if we
find multiple versions of a crate in the build directly, instead of
silently picking the first version we find.
  • Loading branch information
Aaron1011 committed Jun 22, 2020
1 parent d3feb8b commit e2ab98d
Show file tree
Hide file tree
Showing 3 changed files with 4 additions and 4 deletions.
1 change: 0 additions & 1 deletion Cargo.lock
Original file line number Diff line number Diff line change
Expand Up @@ -3532,7 +3532,6 @@ dependencies = [
"serde_json",
"smallvec 0.6.10",
"smallvec 1.4.0",
"syn 0.15.35",
"syn 1.0.11",
"url 2.1.0",
"winapi 0.3.8",
Expand Down
4 changes: 3 additions & 1 deletion src/tools/clippy/tests/compile-test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,9 @@ fn third_party_crates() -> String {
if let Some(name) = path.file_name().and_then(OsStr::to_str) {
for dep in CRATES {
if name.starts_with(&format!("lib{}-", dep)) && name.ends_with(".rlib") {
crates.entry(dep).or_insert(path);
if let Some(old) = crates.insert(dep, path.clone()) {
panic!("Found multiple rlibs for crate `{}`: `{:?}` and `{:?}", dep, old, path);
}
break;
}
}
Expand Down
3 changes: 1 addition & 2 deletions src/tools/rustc-workspace-hack/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,7 @@ serde = { version = "1.0.82", features = ['derive'] }
serde_json = { version = "1.0.31", features = ["raw_value"] }
smallvec-0_6 = { package = "smallvec", version = "0.6", features = ['union', 'may_dangle'] }
smallvec = { version = "1.0", features = ['union', 'may_dangle'] }
syn = { version = "0.15", features = ['full', 'extra-traits'] }
syn-1 = { package = "syn", version = "1", features = ['fold', 'full', 'extra-traits', 'visit'] }
syn = { version = "1", features = ['fold', 'full', 'extra-traits', 'visit'] }
url = { version = "2.0", features = ['serde'] }

[target.'cfg(not(windows))'.dependencies]
Expand Down

0 comments on commit e2ab98d

Please sign in to comment.