Skip to content

Commit 7a74e9d

Browse files
authored
Rollup merge of #138305 - lnicola:sync-from-ra, r=lnicola
Subtree update of `rust-analyzer` r? `@ghost`
2 parents 5f5f81c + be48993 commit 7a74e9d

File tree

184 files changed

+4676
-1880
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

184 files changed

+4676
-1880
lines changed

.editorconfig

+3
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,6 @@ indent_size = 2
1515

1616
[*.{yml,yaml}]
1717
indent_size = 2
18+
19+
[COMMIT_EDITMSG]
20+
max_line_length = unset

.github/workflows/ci.yaml

+46-27
Original file line numberDiff line numberDiff line change
@@ -35,19 +35,48 @@ jobs:
3535
typescript:
3636
- 'editors/code/**'
3737
proc_macros:
38+
- 'crates/tt/**'
3839
- 'crates/proc-macro-api/**'
3940
- 'crates/proc-macro-srv/**'
4041
- 'crates/proc-macro-srv-cli/**'
4142
42-
rust:
43+
proc-macro-srv:
4344
needs: changes
45+
if: github.repository == 'rust-lang/rust-analyzer' && needs.changes.outputs.proc_macros == 'true'
46+
name: proc-macro-srv
47+
runs-on: ubuntu-latest
48+
steps:
49+
- name: Checkout repository
50+
uses: actions/checkout@v4
51+
with:
52+
ref: ${{ github.event.pull_request.head.sha }}
53+
54+
- name: Install Rust toolchain
55+
run: |
56+
rustup update --no-self-update nightly
57+
rustup default nightly
58+
rustup component add --toolchain nightly rust-src rustfmt
59+
# https://github.com/actions-rust-lang/setup-rust-toolchain/blob/main/rust.json
60+
- name: Install Rust Problem Matcher
61+
if: matrix.os == 'ubuntu-latest'
62+
run: echo "::add-matcher::.github/rust.json"
63+
64+
- name: Cache Dependencies
65+
uses: Swatinem/rust-cache@9bdad043e88c75890e36ad3bbc8d27f0090dd609
66+
67+
- name: Bump opt-level
68+
if: matrix.os == 'ubuntu-latest'
69+
run: sed -i '/\[profile.dev]/a opt-level=1' Cargo.toml
70+
71+
- name: Test
72+
run: cargo test --features sysroot-abi -p rust-analyzer -p proc-macro-srv -p proc-macro-srv-cli -p proc-macro-api -- --quiet
73+
74+
rust:
4475
if: github.repository == 'rust-lang/rust-analyzer'
4576
name: Rust
4677
runs-on: ${{ matrix.os }}
4778
env:
4879
CC: deny_c
49-
RUST_CHANNEL: "${{ needs.changes.outputs.proc_macros == 'true' && 'nightly' || 'stable' }}"
50-
USE_SYSROOT_ABI: "${{ needs.changes.outputs.proc_macros == 'true' && '--features sysroot-abi' || '' }}"
5180

5281
strategy:
5382
fail-fast: false
@@ -62,22 +91,19 @@ jobs:
6291

6392
- name: Install Rust toolchain
6493
run: |
65-
rustup update --no-self-update ${{ env.RUST_CHANNEL }}
66-
rustup default ${{ env.RUST_CHANNEL }}
67-
rustup component add --toolchain ${{ env.RUST_CHANNEL }} rust-src
94+
rustup update --no-self-update stable
95+
rustup default stable
96+
rustup component add --toolchain stable rust-src
6897
# We always use a nightly rustfmt, regardless of channel, because we need
6998
# --file-lines.
70-
rustup toolchain add nightly --profile minimal
71-
rustup component add --toolchain nightly rustfmt
99+
rustup toolchain install nightly --profile minimal --component rustfmt
72100
# https://github.com/actions-rust-lang/setup-rust-toolchain/blob/main/rust.json
73101
- name: Install Rust Problem Matcher
74102
if: matrix.os == 'ubuntu-latest'
75103
run: echo "::add-matcher::.github/rust.json"
76104

77105
- name: Cache Dependencies
78106
uses: Swatinem/rust-cache@9bdad043e88c75890e36ad3bbc8d27f0090dd609
79-
with:
80-
key: ${{ env.RUST_CHANNEL }}
81107

82108
- name: Bump opt-level
83109
if: matrix.os == 'ubuntu-latest'
@@ -87,16 +113,16 @@ jobs:
87113
run: cargo codegen --check
88114

89115
- name: Compile (tests)
90-
run: cargo test --no-run --locked ${{ env.USE_SYSROOT_ABI }}
116+
run: cargo test --no-run --locked
91117

92118
# It's faster to `test` before `build` ¯\_(ツ)_/¯
93119
- name: Compile (rust-analyzer)
94120
if: matrix.os == 'ubuntu-latest'
95-
run: cargo build --quiet ${{ env.USE_SYSROOT_ABI }}
121+
run: cargo build --quiet
96122

97123
- name: Test
98124
if: matrix.os == 'ubuntu-latest' || matrix.os == 'windows-latest' || github.event_name == 'push'
99-
run: cargo test ${{ env.USE_SYSROOT_ABI }} -- --nocapture --quiet
125+
run: cargo test -- --quiet
100126

101127
- name: Switch to stable toolchain
102128
run: |
@@ -157,7 +183,7 @@ jobs:
157183
158184
typescript:
159185
needs: changes
160-
if: github.repository == 'rust-lang/rust-analyzer'
186+
if: github.repository == 'rust-lang/rust-analyzer' && needs.changes.outputs.typescript == 'true'
161187
name: TypeScript
162188
strategy:
163189
fail-fast: false
@@ -169,21 +195,18 @@ jobs:
169195
steps:
170196
- name: Checkout repository
171197
uses: actions/checkout@v4
172-
if: needs.changes.outputs.typescript == 'true'
173198

174199
- name: Install Nodejs
175200
uses: actions/setup-node@v4
176201
with:
177202
node-version: 22
178-
if: needs.changes.outputs.typescript == 'true'
179203

180204
- name: Install xvfb
181-
if: matrix.os == 'ubuntu-latest' && needs.changes.outputs.typescript == 'true'
205+
if: matrix.os == 'ubuntu-latest'
182206
run: sudo apt-get install -y xvfb
183207

184208
- run: npm ci
185209
working-directory: ./editors/code
186-
if: needs.changes.outputs.typescript == 'true'
187210

188211
# - run: npm audit || { sleep 10 && npm audit; } || { sleep 30 && npm audit; }
189212
# if: runner.os == 'Linux'
@@ -192,35 +215,31 @@ jobs:
192215
# If this steps fails, your code's type integrity might be wrong at some places at TypeScript level.
193216
- run: npm run typecheck
194217
working-directory: ./editors/code
195-
if: needs.changes.outputs.typescript == 'true'
196218

197219
# You may fix the code automatically by running `npm run lint:fix` if this steps fails.
198220
- run: npm run lint
199221
working-directory: ./editors/code
200-
if: needs.changes.outputs.typescript == 'true'
201222

202223
# To fix this steps, please run `npm run format`.
203224
- run: npm run format:check
204225
working-directory: ./editors/code
205-
if: needs.changes.outputs.typescript == 'true'
206226

207227
- name: Run VS Code tests (Linux)
208-
if: matrix.os == 'ubuntu-latest' && needs.changes.outputs.typescript == 'true'
228+
if: matrix.os == 'ubuntu-latest'
209229
env:
210230
VSCODE_CLI: 1
211231
run: xvfb-run npm test
212232
working-directory: ./editors/code
213233

214234
- name: Run VS Code tests (Windows)
215-
if: matrix.os == 'windows-latest' && needs.changes.outputs.typescript == 'true'
235+
if: matrix.os == 'windows-latest'
216236
env:
217237
VSCODE_CLI: 1
218238
run: npm test
219239
working-directory: ./editors/code
220240

221241
- run: npm run package --scripts-prepend-node-path
222242
working-directory: ./editors/code
223-
if: needs.changes.outputs.typescript == 'true'
224243

225244
typo-check:
226245
name: Typo Check
@@ -242,7 +261,7 @@ jobs:
242261
run: typos
243262

244263
conclusion:
245-
needs: [rust, rust-cross, typescript, typo-check]
264+
needs: [rust, rust-cross, typescript, typo-check, proc-macro-srv]
246265
# We need to ensure this job does *not* get skipped if its dependencies fail,
247266
# because a skipped job is considered a success by GitHub. So we have to
248267
# overwrite `if:`. We use `!cancelled()` to ensure the job does still not get run
@@ -257,5 +276,5 @@ jobs:
257276
run: |
258277
# Print the dependent jobs to see them in the CI log
259278
jq -C <<< '${{ toJson(needs) }}'
260-
# Check if all jobs that we depend on (in the needs array) were successful.
261-
jq --exit-status 'all(.result == "success")' <<< '${{ toJson(needs) }}'
279+
# Check if all jobs that we depend on (in the needs array) were successful (or have been skipped).
280+
jq --exit-status 'all(.result == "success" or .result == "skipped")' <<< '${{ toJson(needs) }}'

Cargo.lock

+22-23
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+10-10
Original file line numberDiff line numberDiff line change
@@ -85,12 +85,12 @@ vfs-notify = { path = "./crates/vfs-notify", version = "0.0.0" }
8585
vfs = { path = "./crates/vfs", version = "0.0.0" }
8686
edition = { path = "./crates/edition", version = "0.0.0" }
8787

88-
ra-ap-rustc_hashes = { version = "0.98", default-features = false }
89-
ra-ap-rustc_lexer = { version = "0.98", default-features = false }
90-
ra-ap-rustc_parse_format = { version = "0.98", default-features = false }
91-
ra-ap-rustc_index = { version = "0.98", default-features = false }
92-
ra-ap-rustc_abi = { version = "0.98", default-features = false }
93-
ra-ap-rustc_pattern_analysis = { version = "0.98", default-features = false }
88+
ra-ap-rustc_hashes = { version = "0.100", default-features = false }
89+
ra-ap-rustc_lexer = { version = "0.100", default-features = false }
90+
ra-ap-rustc_parse_format = { version = "0.100", default-features = false }
91+
ra-ap-rustc_index = { version = "0.100", default-features = false }
92+
ra-ap-rustc_abi = { version = "0.100", default-features = false }
93+
ra-ap-rustc_pattern_analysis = { version = "0.100", default-features = false }
9494

9595
# local crates that aren't published to crates.io. These should not have versions.
9696

@@ -105,10 +105,10 @@ arrayvec = "0.7.4"
105105
bitflags = "2.4.1"
106106
cargo_metadata = "0.18.1"
107107
camino = "1.1.6"
108-
chalk-solve = { version = "0.99.0", default-features = false }
109-
chalk-ir = "0.99.0"
110-
chalk-recursive = { version = "0.99.0", default-features = false }
111-
chalk-derive = "0.99.0"
108+
chalk-solve = { version = "0.100.0", default-features = false }
109+
chalk-ir = "0.100.0"
110+
chalk-recursive = { version = "0.100.0", default-features = false }
111+
chalk-derive = "0.100.0"
112112
crossbeam-channel = "0.5.8"
113113
dissimilar = "1.0.7"
114114
dot = "0.1.4"

crates/cfg/src/cfg_expr.rs

+19
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,25 @@ pub enum CfgAtom {
1818
KeyValue { key: Symbol, value: Symbol },
1919
}
2020

21+
impl PartialOrd for CfgAtom {
22+
fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> {
23+
Some(self.cmp(other))
24+
}
25+
}
26+
27+
impl Ord for CfgAtom {
28+
fn cmp(&self, other: &Self) -> std::cmp::Ordering {
29+
match (self, other) {
30+
(CfgAtom::Flag(a), CfgAtom::Flag(b)) => a.as_str().cmp(b.as_str()),
31+
(CfgAtom::Flag(_), CfgAtom::KeyValue { .. }) => std::cmp::Ordering::Less,
32+
(CfgAtom::KeyValue { .. }, CfgAtom::Flag(_)) => std::cmp::Ordering::Greater,
33+
(CfgAtom::KeyValue { key, value }, CfgAtom::KeyValue { key: key2, value: value2 }) => {
34+
key.as_str().cmp(key2.as_str()).then(value.as_str().cmp(value2.as_str()))
35+
}
36+
}
37+
}
38+
}
39+
2140
impl fmt::Display for CfgAtom {
2241
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
2342
match self {

0 commit comments

Comments
 (0)