Unnamed repository; edit this file 'description' to name the repository.
Auto merge of #17954 - Noratrieb:rustc-blazing-hash, r=Veykril
Update rustc-hash to version 2 This brings in the new optimized algorithm that was shown to have small performance benefits for rustc. I haven't run the rust-analyzer benchmarks. See https://github.com/rust-lang/rustc-hash/pull/37.
bors 2024-10-21
parent 9323b53 · parent 02e189d · commit fb832ff
-rw-r--r--Cargo.lock54
-rw-r--r--Cargo.toml2
-rw-r--r--crates/hir-ty/src/consteval/tests.rs7
-rw-r--r--crates/hir-ty/src/lib.rs12
-rw-r--r--crates/ide-assists/src/handlers/bool_to_enum.rs3
-rw-r--r--crates/ide-completion/src/render.rs2
-rw-r--r--crates/ide/src/annotations.rs238
-rw-r--r--crates/ide/src/runnables.rs12
-rw-r--r--crates/ide/src/syntax_highlighting/test_data/highlight_rainbow.html12
-rw-r--r--crates/mbe/src/benchmark.rs13
-rw-r--r--crates/ra-salsa/Cargo.toml2
-rw-r--r--docs/user/generated_config.adoc44
-rw-r--r--editors/code/package.json44
13 files changed, 227 insertions, 218 deletions
diff --git a/Cargo.lock b/Cargo.lock
index da65d88049..951c7f8bba 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -73,7 +73,7 @@ dependencies = [
"intern",
"la-arena 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
"lz4_flex",
- "rustc-hash",
+ "rustc-hash 2.0.0",
"salsa",
"semver",
"span",
@@ -161,7 +161,7 @@ dependencies = [
"expect-test",
"intern",
"oorandom",
- "rustc-hash",
+ "rustc-hash 2.0.0",
"syntax",
"syntax-bridge",
"tt",
@@ -216,7 +216,7 @@ dependencies = [
"chalk-derive",
"chalk-ir",
"chalk-solve",
- "rustc-hash",
+ "rustc-hash 1.1.0",
"tracing",
]
@@ -232,7 +232,7 @@ dependencies = [
"indexmap",
"itertools",
"petgraph",
- "rustc-hash",
+ "rustc-hash 1.1.0",
"tracing",
]
@@ -513,7 +513,7 @@ dependencies = [
"hir-ty",
"intern",
"itertools",
- "rustc-hash",
+ "rustc-hash 2.0.0",
"smallvec",
"span",
"stdx",
@@ -547,7 +547,7 @@ dependencies = [
"mbe",
"ra-ap-rustc_abi",
"ra-ap-rustc_parse_format",
- "rustc-hash",
+ "rustc-hash 2.0.0",
"rustc_apfloat",
"smallvec",
"span",
@@ -577,7 +577,7 @@ dependencies = [
"limit",
"mbe",
"parser",
- "rustc-hash",
+ "rustc-hash 2.0.0",
"smallvec",
"span",
"stdx",
@@ -616,7 +616,7 @@ dependencies = [
"ra-ap-rustc_abi",
"ra-ap-rustc_index",
"ra-ap-rustc_pattern_analysis",
- "rustc-hash",
+ "rustc-hash 2.0.0",
"rustc_apfloat",
"scoped-tls",
"smallvec",
@@ -737,7 +737,7 @@ dependencies = [
"parser",
"profile",
"rayon",
- "rustc-hash",
+ "rustc-hash 2.0.0",
"span",
"stdx",
"syntax",
@@ -834,7 +834,7 @@ version = "0.0.0"
dependencies = [
"dashmap",
"hashbrown",
- "rustc-hash",
+ "rustc-hash 2.0.0",
"sptr",
"triomphe",
]
@@ -1051,7 +1051,7 @@ dependencies = [
"intern",
"parser",
"ra-ap-rustc_lexer",
- "rustc-hash",
+ "rustc-hash 2.0.0",
"smallvec",
"span",
"stdx",
@@ -1345,7 +1345,7 @@ dependencies = [
"indexmap",
"intern",
"paths",
- "rustc-hash",
+ "rustc-hash 2.0.0",
"serde",
"serde_json",
"span",
@@ -1435,7 +1435,7 @@ dependencies = [
"itertools",
"la-arena 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
"paths",
- "rustc-hash",
+ "rustc-hash 2.0.0",
"semver",
"serde",
"serde_json",
@@ -1555,7 +1555,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "273d5f72926a58c7eea27aebc898d1d5b32d23d2342f692a94a2cf8746aa4a2f"
dependencies = [
"ra-ap-rustc_index",
- "rustc-hash",
+ "rustc-hash 1.1.0",
"rustc_apfloat",
"smallvec",
"tracing",
@@ -1640,7 +1640,7 @@ dependencies = [
"countme",
"hashbrown",
"memoffset",
- "rustc-hash",
+ "rustc-hash 1.1.0",
"text-size",
]
@@ -1680,7 +1680,7 @@ dependencies = [
"profile",
"project-model",
"rayon",
- "rustc-hash",
+ "rustc-hash 2.0.0",
"scip",
"semver",
"serde",
@@ -1718,6 +1718,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
[[package]]
+name = "rustc-hash"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152"
+
+[[package]]
name = "rustc_apfloat"
version = "0.2.1+llvm-462a31f5a5ab"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1746,7 +1752,7 @@ dependencies = [
"oorandom",
"parking_lot",
"rand",
- "rustc-hash",
+ "rustc-hash 2.0.0",
"salsa-macros",
"smallvec",
"tracing",
@@ -1898,7 +1904,7 @@ version = "0.0.0"
dependencies = [
"hashbrown",
"la-arena 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "rustc-hash",
+ "rustc-hash 2.0.0",
"salsa",
"stdx",
"syntax",
@@ -1967,7 +1973,7 @@ dependencies = [
"ra-ap-rustc_lexer",
"rayon",
"rowan",
- "rustc-hash",
+ "rustc-hash 2.0.0",
"rustc_apfloat",
"smol_str",
"stdx",
@@ -1983,7 +1989,7 @@ version = "0.0.0"
dependencies = [
"intern",
"parser",
- "rustc-hash",
+ "rustc-hash 2.0.0",
"span",
"stdx",
"syntax",
@@ -2000,7 +2006,7 @@ dependencies = [
"cfg",
"hir-expand",
"intern",
- "rustc-hash",
+ "rustc-hash 2.0.0",
"span",
"stdx",
"test-utils",
@@ -2014,7 +2020,7 @@ dependencies = [
"dissimilar",
"paths",
"profile",
- "rustc-hash",
+ "rustc-hash 2.0.0",
"stdx",
"text-size",
"tracing",
@@ -2361,7 +2367,7 @@ dependencies = [
"indexmap",
"nohash-hasher",
"paths",
- "rustc-hash",
+ "rustc-hash 2.0.0",
"stdx",
"tracing",
]
@@ -2374,7 +2380,7 @@ dependencies = [
"notify",
"paths",
"rayon",
- "rustc-hash",
+ "rustc-hash 2.0.0",
"stdx",
"tracing",
"vfs",
diff --git a/Cargo.toml b/Cargo.toml
index 17cefe941e..397c68319d 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -136,7 +136,7 @@ process-wrap = { version = "8.0.2", features = ["std"] }
pulldown-cmark-to-cmark = "10.0.4"
pulldown-cmark = { version = "0.9.0", default-features = false }
rayon = "1.8.0"
-rustc-hash = "1.1.0"
+rustc-hash = "2.0.0"
semver = "1.0.14"
serde = { version = "1.0.192", features = ["derive"] }
serde_json = "1.0.108"
diff --git a/crates/hir-ty/src/consteval/tests.rs b/crates/hir-ty/src/consteval/tests.rs
index 7093fcadcb..0a8bfaa70f 100644
--- a/crates/hir-ty/src/consteval/tests.rs
+++ b/crates/hir-ty/src/consteval/tests.rs
@@ -95,7 +95,8 @@ fn check_answer(ra_fixture: &str, check: impl FnOnce(&[u8], &MemoryMap)) {
fn pretty_print_err(e: ConstEvalError, db: TestDB) -> String {
let mut err = String::new();
let span_formatter = |file, range| format!("{file:?} {range:?}");
- let edition = db.crate_graph()[db.test_crate()].edition;
+ let edition =
+ db.crate_graph()[*db.crate_graph().crates_in_topological_order().last().unwrap()].edition;
match e {
ConstEvalError::MirLowerError(e) => e.pretty_print(&mut err, &db, span_formatter, edition),
ConstEvalError::MirEvalError(e) => e.pretty_print(&mut err, &db, span_formatter, edition),
@@ -2896,7 +2897,7 @@ fn recursive_adt() {
{
const VARIANT_TAG_TREE: TagTree = TagTree::Choice(
&[
- TagTree::Leaf,
+ TAG_TREE,
],
);
VARIANT_TAG_TREE
@@ -2905,6 +2906,6 @@ fn recursive_adt() {
TAG_TREE
};
"#,
- |e| matches!(e, ConstEvalError::MirEvalError(MirEvalError::StackOverflow)),
+ |e| matches!(e, ConstEvalError::MirLowerError(MirLowerError::Loop)),
);
}
diff --git a/crates/hir-ty/src/lib.rs b/crates/hir-ty/src/lib.rs
index 649cf88bb8..9c1d8bcf36 100644
--- a/crates/hir-ty/src/lib.rs
+++ b/crates/hir-ty/src/lib.rs
@@ -51,10 +51,7 @@ mod test_db;
#[cfg(test)]
mod tests;
-use std::{
- collections::hash_map::Entry,
- hash::{BuildHasherDefault, Hash},
-};
+use std::hash::Hash;
use base_db::ra_salsa::InternValueTrivial;
use chalk_ir::{
@@ -65,10 +62,11 @@ use chalk_ir::{
use either::Either;
use hir_def::{hir::ExprId, type_ref::Rawness, CallableDefId, GeneralConstId, TypeOrConstParamId};
use hir_expand::name::Name;
+use indexmap::{map::Entry, IndexMap};
use intern::{sym, Symbol};
use la_arena::{Arena, Idx};
use mir::{MirEvalError, VTableMap};
-use rustc_hash::{FxHashMap, FxHashSet};
+use rustc_hash::{FxBuildHasher, FxHashMap, FxHashSet};
use span::Edition;
use syntax::ast::{make, ConstArg};
use traits::FnTrait;
@@ -199,7 +197,7 @@ pub enum MemoryMap {
#[derive(Debug, Default, Clone, PartialEq, Eq)]
pub struct ComplexMemoryMap {
- memory: FxHashMap<usize, Box<[u8]>>,
+ memory: IndexMap<usize, Box<[u8]>, FxBuildHasher>,
vtable: VTableMap,
}
@@ -245,7 +243,7 @@ impl MemoryMap {
match self {
MemoryMap::Empty => Ok(Default::default()),
MemoryMap::Simple(m) => transform((&0, m)).map(|(addr, val)| {
- let mut map = FxHashMap::with_capacity_and_hasher(1, BuildHasherDefault::default());
+ let mut map = FxHashMap::with_capacity_and_hasher(1, rustc_hash::FxBuildHasher);
map.insert(addr, val);
map
}),
diff --git a/crates/ide-assists/src/handlers/bool_to_enum.rs b/crates/ide-assists/src/handlers/bool_to_enum.rs
index cd5fe0f862..c035c59ffc 100644
--- a/crates/ide-assists/src/handlers/bool_to_enum.rs
+++ b/crates/ide-assists/src/handlers/bool_to_enum.rs
@@ -1095,6 +1095,7 @@ fn main() {
#[test]
fn field_enum_cross_file() {
+ // FIXME: The import is missing
check_assist(
bool_to_enum,
r#"
@@ -1132,7 +1133,7 @@ fn foo() {
}
//- /main.rs
-use foo::{Bool, Foo};
+use foo::Foo;
mod foo;
diff --git a/crates/ide-completion/src/render.rs b/crates/ide-completion/src/render.rs
index f2e9de9382..4dd171142f 100644
--- a/crates/ide-completion/src/render.rs
+++ b/crates/ide-completion/src/render.rs
@@ -1853,8 +1853,8 @@ fn f() { A { bar: b$0 }; }
expect![[r#"
fn bar() [type+name]
fn baz() [type]
- ex baz() [type]
ex bar() [type]
+ ex baz() [type]
st A []
fn f() []
"#]],
diff --git a/crates/ide/src/annotations.rs b/crates/ide/src/annotations.rs
index 8e0166a4a7..121a463c9f 100644
--- a/crates/ide/src/annotations.rs
+++ b/crates/ide/src/annotations.rs
@@ -288,6 +288,20 @@ fn main() {
},
Annotation {
range: 53..57,
+ kind: HasReferences {
+ pos: FilePositionWrapper {
+ file_id: FileId(
+ 0,
+ ),
+ offset: 53,
+ },
+ data: Some(
+ [],
+ ),
+ },
+ },
+ Annotation {
+ range: 53..57,
kind: Runnable(
Runnable {
use_name_in_title: false,
@@ -305,20 +319,6 @@ fn main() {
},
),
},
- Annotation {
- range: 53..57,
- kind: HasReferences {
- pos: FilePositionWrapper {
- file_id: FileId(
- 0,
- ),
- offset: 53,
- },
- data: Some(
- [],
- ),
- },
- },
]
"#]],
);
@@ -338,6 +338,20 @@ fn main() {
[
Annotation {
range: 7..11,
+ kind: HasImpls {
+ pos: FilePositionWrapper {
+ file_id: FileId(
+ 0,
+ ),
+ offset: 7,
+ },
+ data: Some(
+ [],
+ ),
+ },
+ },
+ Annotation {
+ range: 7..11,
kind: HasReferences {
pos: FilePositionWrapper {
file_id: FileId(
@@ -358,13 +372,13 @@ fn main() {
},
},
Annotation {
- range: 7..11,
- kind: HasImpls {
+ range: 17..21,
+ kind: HasReferences {
pos: FilePositionWrapper {
file_id: FileId(
0,
),
- offset: 7,
+ offset: 17,
},
data: Some(
[],
@@ -390,20 +404,6 @@ fn main() {
},
),
},
- Annotation {
- range: 17..21,
- kind: HasReferences {
- pos: FilePositionWrapper {
- file_id: FileId(
- 0,
- ),
- offset: 17,
- },
- data: Some(
- [],
- ),
- },
- },
]
"#]],
);
@@ -427,7 +427,7 @@ fn main() {
[
Annotation {
range: 7..11,
- kind: HasReferences {
+ kind: HasImpls {
pos: FilePositionWrapper {
file_id: FileId(
0,
@@ -436,17 +436,14 @@ fn main() {
},
data: Some(
[
- FileRangeWrapper {
- file_id: FileId(
- 0,
- ),
- range: 57..61,
- },
- FileRangeWrapper {
+ NavigationTarget {
file_id: FileId(
0,
),
- range: 93..97,
+ full_range: 36..64,
+ focus_range: 57..61,
+ name: "impl",
+ kind: Impl,
},
],
),
@@ -454,7 +451,7 @@ fn main() {
},
Annotation {
range: 7..11,
- kind: HasImpls {
+ kind: HasReferences {
pos: FilePositionWrapper {
file_id: FileId(
0,
@@ -463,14 +460,17 @@ fn main() {
},
data: Some(
[
- NavigationTarget {
+ FileRangeWrapper {
file_id: FileId(
0,
),
- full_range: 36..64,
- focus_range: 57..61,
- name: "impl",
- kind: Impl,
+ range: 57..61,
+ },
+ FileRangeWrapper {
+ file_id: FileId(
+ 0,
+ ),
+ range: 93..97,
},
],
),
@@ -523,20 +523,6 @@ fn main() {
},
Annotation {
range: 69..73,
- kind: HasReferences {
- pos: FilePositionWrapper {
- file_id: FileId(
- 0,
- ),
- offset: 69,
- },
- data: Some(
- [],
- ),
- },
- },
- Annotation {
- range: 69..73,
kind: Runnable(
Runnable {
use_name_in_title: false,
@@ -554,6 +540,20 @@ fn main() {
},
),
},
+ Annotation {
+ range: 69..73,
+ kind: HasReferences {
+ pos: FilePositionWrapper {
+ file_id: FileId(
+ 0,
+ ),
+ offset: 69,
+ },
+ data: Some(
+ [],
+ ),
+ },
+ },
]
"#]],
);
@@ -569,6 +569,20 @@ fn main() {}
[
Annotation {
range: 3..7,
+ kind: HasReferences {
+ pos: FilePositionWrapper {
+ file_id: FileId(
+ 0,
+ ),
+ offset: 3,
+ },
+ data: Some(
+ [],
+ ),
+ },
+ },
+ Annotation {
+ range: 3..7,
kind: Runnable(
Runnable {
use_name_in_title: false,
@@ -586,20 +600,6 @@ fn main() {}
},
),
},
- Annotation {
- range: 3..7,
- kind: HasReferences {
- pos: FilePositionWrapper {
- file_id: FileId(
- 0,
- ),
- offset: 3,
- },
- data: Some(
- [],
- ),
- },
- },
]
"#]],
);
@@ -623,7 +623,7 @@ fn main() {
[
Annotation {
range: 7..11,
- kind: HasReferences {
+ kind: HasImpls {
pos: FilePositionWrapper {
file_id: FileId(
0,
@@ -632,17 +632,14 @@ fn main() {
},
data: Some(
[
- FileRangeWrapper {
- file_id: FileId(
- 0,
- ),
- range: 19..23,
- },
- FileRangeWrapper {
+ NavigationTarget {
file_id: FileId(
0,
),
- range: 74..78,
+ full_range: 14..56,
+ focus_range: 19..23,
+ name: "impl",
+ kind: Impl,
},
],
),
@@ -650,7 +647,7 @@ fn main() {
},
Annotation {
range: 7..11,
- kind: HasImpls {
+ kind: HasReferences {
pos: FilePositionWrapper {
file_id: FileId(
0,
@@ -659,14 +656,17 @@ fn main() {
},
data: Some(
[
- NavigationTarget {
+ FileRangeWrapper {
file_id: FileId(
0,
),
- full_range: 14..56,
- focus_range: 19..23,
- name: "impl",
- kind: Impl,
+ range: 19..23,
+ },
+ FileRangeWrapper {
+ file_id: FileId(
+ 0,
+ ),
+ range: 74..78,
},
],
),
@@ -695,20 +695,6 @@ fn main() {
},
Annotation {
range: 61..65,
- kind: HasReferences {
- pos: FilePositionWrapper {
- file_id: FileId(
- 0,
- ),
- offset: 61,
- },
- data: Some(
- [],
- ),
- },
- },
- Annotation {
- range: 61..65,
kind: Runnable(
Runnable {
use_name_in_title: false,
@@ -726,6 +712,20 @@ fn main() {
},
),
},
+ Annotation {
+ range: 61..65,
+ kind: HasReferences {
+ pos: FilePositionWrapper {
+ file_id: FileId(
+ 0,
+ ),
+ offset: 61,
+ },
+ data: Some(
+ [],
+ ),
+ },
+ },
]
"#]],
);
@@ -746,20 +746,6 @@ mod tests {
[
Annotation {
range: 3..7,
- kind: HasReferences {
- pos: FilePositionWrapper {
- file_id: FileId(
- 0,
- ),
- offset: 3,
- },
- data: Some(
- [],
- ),
- },
- },
- Annotation {
- range: 3..7,
kind: Runnable(
Runnable {
use_name_in_title: false,
@@ -778,6 +764,20 @@ mod tests {
),
},
Annotation {
+ range: 3..7,
+ kind: HasReferences {
+ pos: FilePositionWrapper {
+ file_id: FileId(
+ 0,
+ ),
+ offset: 3,
+ },
+ data: Some(
+ [],
+ ),
+ },
+ },
+ Annotation {
range: 18..23,
kind: Runnable(
Runnable {
@@ -876,7 +876,7 @@ struct Foo;
[
Annotation {
range: 0..71,
- kind: HasReferences {
+ kind: HasImpls {
pos: FilePositionWrapper {
file_id: FileId(
0,
@@ -890,7 +890,7 @@ struct Foo;
},
Annotation {
range: 0..71,
- kind: HasImpls {
+ kind: HasReferences {
pos: FilePositionWrapper {
file_id: FileId(
0,
diff --git a/crates/ide/src/runnables.rs b/crates/ide/src/runnables.rs
index 38dc522789..3bbbd36c1b 100644
--- a/crates/ide/src/runnables.rs
+++ b/crates/ide/src/runnables.rs
@@ -1350,18 +1350,18 @@ mod tests {
file_id: FileId(
0,
),
- full_range: 121..185,
- focus_range: 136..145,
- name: "foo2_test",
+ full_range: 52..115,
+ focus_range: 67..75,
+ name: "foo_test",
kind: Function,
},
NavigationTarget {
file_id: FileId(
0,
),
- full_range: 52..115,
- focus_range: 67..75,
- name: "foo_test",
+ full_range: 121..185,
+ focus_range: 136..145,
+ name: "foo2_test",
kind: Function,
},
]
diff --git a/crates/ide/src/syntax_highlighting/test_data/highlight_rainbow.html b/crates/ide/src/syntax_highlighting/test_data/highlight_rainbow.html
index 5d51b14978..a4449b5d8d 100644
--- a/crates/ide/src/syntax_highlighting/test_data/highlight_rainbow.html
+++ b/crates/ide/src/syntax_highlighting/test_data/highlight_rainbow.html
@@ -46,14 +46,14 @@ pre { color: #DCDCCC; background: #3F3F3F; font-size: 22px; padd
.unresolved_reference { color: #FC5555; text-decoration: wavy underline; }
</style>
<pre><code><span class="keyword">fn</span> <span class="function declaration">main</span><span class="parenthesis">(</span><span class="parenthesis">)</span> <span class="brace">{</span>
- <span class="keyword">let</span> <span class="variable declaration reference" data-binding-hash="8384512769119783714" style="color: hsl(59,93%,58%);">hello</span> <span class="operator">=</span> <span class="string_literal">"hello"</span><span class="semicolon">;</span>
- <span class="keyword">let</span> <span class="variable declaration" data-binding-hash="17360984456076382725" style="color: hsl(95,79%,86%);">x</span> <span class="operator">=</span> <span class="variable reference" data-binding-hash="8384512769119783714" style="color: hsl(59,93%,58%);">hello</span><span class="operator">.</span><span class="unresolved_reference">to_string</span><span class="parenthesis">(</span><span class="parenthesis">)</span><span class="semicolon">;</span>
- <span class="keyword">let</span> <span class="variable declaration" data-binding-hash="17186414787327620935" style="color: hsl(196,64%,89%);">y</span> <span class="operator">=</span> <span class="variable reference" data-binding-hash="8384512769119783714" style="color: hsl(59,93%,58%);">hello</span><span class="operator">.</span><span class="unresolved_reference">to_string</span><span class="parenthesis">(</span><span class="parenthesis">)</span><span class="semicolon">;</span>
+ <span class="keyword">let</span> <span class="variable declaration reference" data-binding-hash="16711699953829236520" style="color: hsl(345,54%,46%);">hello</span> <span class="operator">=</span> <span class="string_literal">"hello"</span><span class="semicolon">;</span>
+ <span class="keyword">let</span> <span class="variable declaration" data-binding-hash="10753541418856619067" style="color: hsl(51,52%,47%);">x</span> <span class="operator">=</span> <span class="variable reference" data-binding-hash="16711699953829236520" style="color: hsl(345,54%,46%);">hello</span><span class="operator">.</span><span class="unresolved_reference">to_string</span><span class="parenthesis">(</span><span class="parenthesis">)</span><span class="semicolon">;</span>
+ <span class="keyword">let</span> <span class="variable declaration" data-binding-hash="9865812862466303869" style="color: hsl(329,86%,55%);">y</span> <span class="operator">=</span> <span class="variable reference" data-binding-hash="16711699953829236520" style="color: hsl(345,54%,46%);">hello</span><span class="operator">.</span><span class="unresolved_reference">to_string</span><span class="parenthesis">(</span><span class="parenthesis">)</span><span class="semicolon">;</span>
- <span class="keyword">let</span> <span class="variable declaration reference" data-binding-hash="4786021388930833562" style="color: hsl(137,61%,87%);">x</span> <span class="operator">=</span> <span class="string_literal">"other color please!"</span><span class="semicolon">;</span>
- <span class="keyword">let</span> <span class="variable declaration" data-binding-hash="18017815841345165192" style="color: hsl(39,76%,89%);">y</span> <span class="operator">=</span> <span class="variable reference" data-binding-hash="4786021388930833562" style="color: hsl(137,61%,87%);">x</span><span class="operator">.</span><span class="unresolved_reference">to_string</span><span class="parenthesis">(</span><span class="parenthesis">)</span><span class="semicolon">;</span>
+ <span class="keyword">let</span> <span class="variable declaration reference" data-binding-hash="4890670724659097491" style="color: hsl(330,46%,45%);">x</span> <span class="operator">=</span> <span class="string_literal">"other color please!"</span><span class="semicolon">;</span>
+ <span class="keyword">let</span> <span class="variable declaration" data-binding-hash="4002942168268782293" style="color: hsl(114,87%,67%);">y</span> <span class="operator">=</span> <span class="variable reference" data-binding-hash="4890670724659097491" style="color: hsl(330,46%,45%);">x</span><span class="operator">.</span><span class="unresolved_reference">to_string</span><span class="parenthesis">(</span><span class="parenthesis">)</span><span class="semicolon">;</span>
<span class="brace">}</span>
<span class="keyword">fn</span> <span class="function declaration">bar</span><span class="parenthesis">(</span><span class="parenthesis">)</span> <span class="brace">{</span>
- <span class="keyword">let</span> <span class="keyword">mut</span> <span class="variable declaration mutable reference" data-binding-hash="8384512769119783714" style="color: hsl(59,93%,58%);">hello</span> <span class="operator">=</span> <span class="string_literal">"hello"</span><span class="semicolon">;</span>
+ <span class="keyword">let</span> <span class="keyword">mut</span> <span class="variable declaration mutable reference" data-binding-hash="16711699953829236520" style="color: hsl(345,54%,46%);">hello</span> <span class="operator">=</span> <span class="string_literal">"hello"</span><span class="semicolon">;</span>
<span class="brace">}</span></code></pre> \ No newline at end of file
diff --git a/crates/mbe/src/benchmark.rs b/crates/mbe/src/benchmark.rs
index 9e4ef14074..270bc05a4e 100644
--- a/crates/mbe/src/benchmark.rs
+++ b/crates/mbe/src/benchmark.rs
@@ -3,6 +3,7 @@
use intern::Symbol;
use rustc_hash::FxHashMap;
use span::{Edition, Span};
+use stdx::itertools::Itertools;
use syntax::{
ast::{self, HasName},
AstNode,
@@ -27,9 +28,10 @@ fn benchmark_parse_macro_rules() {
let hash: usize = {
let _pt = bench("mbe parse macro rules");
rules
- .values()
- .map(|it| {
- DeclarativeMacro::parse_macro_rules(it, |_| span::Edition::CURRENT).rules.len()
+ .into_iter()
+ .sorted_by_key(|(id, _)| id.clone())
+ .map(|(_, it)| {
+ DeclarativeMacro::parse_macro_rules(&it, |_| span::Edition::CURRENT).rules.len()
})
.sum()
};
@@ -55,12 +57,13 @@ fn benchmark_expand_macro_rules() {
})
.sum()
};
- assert_eq!(hash, 69413);
+ assert_eq!(hash, 65720);
}
fn macro_rules_fixtures() -> FxHashMap<String, DeclarativeMacro> {
macro_rules_fixtures_tt()
.into_iter()
+ .sorted_by_key(|(id, _)| id.clone())
.map(|(id, tt)| (id, DeclarativeMacro::parse_macro_rules(&tt, |_| span::Edition::CURRENT)))
.collect()
}
@@ -93,7 +96,7 @@ fn invocation_fixtures(
let mut seed = 123456789;
let mut res = Vec::new();
- for (name, it) in rules {
+ for (name, it) in rules.iter().sorted_by_key(|&(id, _)| id) {
for rule in it.rules.iter() {
// Generate twice
for _ in 0..2 {
diff --git a/crates/ra-salsa/Cargo.toml b/crates/ra-salsa/Cargo.toml
index b81e780337..f8a3156fe4 100644
--- a/crates/ra-salsa/Cargo.toml
+++ b/crates/ra-salsa/Cargo.toml
@@ -17,7 +17,7 @@ indexmap = "2.1.0"
lock_api = "0.4"
tracing = "0.1"
parking_lot = "0.12.1"
-rustc-hash = "1.0"
+rustc-hash = "2.0.0"
smallvec = "1.0.0"
oorandom = "11"
triomphe = "0.1.11"
diff --git a/docs/user/generated_config.adoc b/docs/user/generated_config.adoc
index babeb4272b..463718835b 100644
--- a/docs/user/generated_config.adoc
+++ b/docs/user/generated_config.adoc
@@ -95,8 +95,8 @@ avoid checking unnecessary things.
Default:
----
{
- "debug_assertions": null,
- "miri": null
+ "miri": null,
+ "debug_assertions": null
}
----
List of cfg options to enable with the given values.
@@ -321,18 +321,10 @@ Enables completions of private items and fields that are defined in the current
Default:
----
{
- "Arc::new": {
- "postfix": "arc",
- "body": "Arc::new(${receiver})",
- "requires": "std::sync::Arc",
- "description": "Put the expression into an `Arc`",
- "scope": "expr"
- },
- "Rc::new": {
- "postfix": "rc",
- "body": "Rc::new(${receiver})",
- "requires": "std::rc::Rc",
- "description": "Put the expression into an `Rc`",
+ "Ok": {
+ "postfix": "ok",
+ "body": "Ok(${receiver})",
+ "description": "Wrap the expression in a `Result::Ok`",
"scope": "expr"
},
"Box::pin": {
@@ -342,10 +334,11 @@ Default:
"description": "Put the expression into a pinned `Box`",
"scope": "expr"
},
- "Err": {
- "postfix": "err",
- "body": "Err(${receiver})",
- "description": "Wrap the expression in a `Result::Err`",
+ "Arc::new": {
+ "postfix": "arc",
+ "body": "Arc::new(${receiver})",
+ "requires": "std::sync::Arc",
+ "description": "Put the expression into an `Arc`",
"scope": "expr"
},
"Some": {
@@ -354,10 +347,17 @@ Default:
"description": "Wrap the expression in an `Option::Some`",
"scope": "expr"
},
- "Ok": {
- "postfix": "ok",
- "body": "Ok(${receiver})",
- "description": "Wrap the expression in a `Result::Ok`",
+ "Err": {
+ "postfix": "err",
+ "body": "Err(${receiver})",
+ "description": "Wrap the expression in a `Result::Err`",
+ "scope": "expr"
+ },
+ "Rc::new": {
+ "postfix": "rc",
+ "body": "Rc::new(${receiver})",
+ "requires": "std::rc::Rc",
+ "description": "Put the expression into an `Rc`",
"scope": "expr"
}
}
diff --git a/editors/code/package.json b/editors/code/package.json
index 6c7f402dc5..70bb5f2447 100644
--- a/editors/code/package.json
+++ b/editors/code/package.json
@@ -728,8 +728,8 @@
"rust-analyzer.cargo.cfgs": {
"markdownDescription": "List of cfg options to enable with the given values.",
"default": {
- "debug_assertions": null,
- "miri": null
+ "miri": null,
+ "debug_assertions": null
},
"type": "object"
}
@@ -1152,18 +1152,10 @@
"rust-analyzer.completion.snippets.custom": {
"markdownDescription": "Custom completion snippets.",
"default": {
- "Arc::new": {
- "postfix": "arc",
- "body": "Arc::new(${receiver})",
- "requires": "std::sync::Arc",
- "description": "Put the expression into an `Arc`",
- "scope": "expr"
- },
- "Rc::new": {
- "postfix": "rc",
- "body": "Rc::new(${receiver})",
- "requires": "std::rc::Rc",
- "description": "Put the expression into an `Rc`",
+ "Ok": {
+ "postfix": "ok",
+ "body": "Ok(${receiver})",
+ "description": "Wrap the expression in a `Result::Ok`",
"scope": "expr"
},
"Box::pin": {
@@ -1173,10 +1165,11 @@
"description": "Put the expression into a pinned `Box`",
"scope": "expr"
},
- "Err": {
- "postfix": "err",
- "body": "Err(${receiver})",
- "description": "Wrap the expression in a `Result::Err`",
+ "Arc::new": {
+ "postfix": "arc",
+ "body": "Arc::new(${receiver})",
+ "requires": "std::sync::Arc",
+ "description": "Put the expression into an `Arc`",
"scope": "expr"
},
"Some": {
@@ -1185,10 +1178,17 @@
"description": "Wrap the expression in an `Option::Some`",
"scope": "expr"
},
- "Ok": {
- "postfix": "ok",
- "body": "Ok(${receiver})",
- "description": "Wrap the expression in a `Result::Ok`",
+ "Err": {
+ "postfix": "err",
+ "body": "Err(${receiver})",
+ "description": "Wrap the expression in a `Result::Err`",
+ "scope": "expr"
+ },
+ "Rc::new": {
+ "postfix": "rc",
+ "body": "Rc::new(${receiver})",
+ "requires": "std::rc::Rc",
+ "description": "Put the expression into an `Rc`",
"scope": "expr"
}
},