diff options
| author | bors <bors@rust-lang.org> | 2024-09-11 10:48:32 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2024-09-11 10:48:32 +0000 |
| commit | 91e9cd302127763e4341d204fc6ec10adcce9adb (patch) | |
| tree | 55d5450884556192dd69b039c7d43afab0286308 /compiler/rustc_llvm/llvm-wrapper/Linker.cpp | |
| parent | 97907ca6ef41a1c102ee51c89d0a0f49544daeaf (diff) | |
| parent | b41f6ab525dbab21a73de3dc844b87a98b36190b (diff) | |
| download | rust-91e9cd302127763e4341d204fc6ec10adcce9adb.tar.gz rust-91e9cd302127763e4341d204fc6ec10adcce9adb.zip | |
Auto merge of #18052 - Coekjan:fix-inline-const, r=Veykril
fix: Fix `inline_const_as_literal` error when the number >= 10
## Description
### The Bug
This PR fixes a small bug in the IDE assistence (`inline_const_as_literal`). When the being-inlined constant is a number and it is greater than or equal to 10, the assistence inserts unexpected string `(0x...)` after the number itself. A simple example is followed:
Current `inline_const_as_literal` changes
```rs
const A: usize = 16;
fn f() -> usize {
A // inline the constant
}
```
into
```rs
const A: usize = 16;
fn f() -> usize {
16 (0x10)
}
```
The bug originates from #14925 & #15306 . #14925 added some unittests, but it just tested the number-inlining behavior when the number is `0`.
https://github.com/rust-lang/rust-analyzer/blob/50882fbfa204027c84753e6d51a1a12884dc1b19/crates/ide-assists/src/handlers/inline_const_as_literal.rs#L124-L138
And #15306 modified the behavior of `Const::render_eval` and added the `(0x...)` part after the number (if the number >= `10`). Because of insufficient unittests in #14925, changes about `Const::render_eval` in #15306 introduced this bug with no CI failure.
### The Fix
I think `Const::render_eval` is intended for user-facing value displaying (e.g. hover) and not designed for `inline_const_as_literal`. To fix the bug, I defined a new function named `Const::eval`, which evaluates the value itself faithfully and simply and does nothing else.
## Thanks
Thanks `@roife` for your kind help. Your guidance helped me better understand the code.
Diffstat (limited to 'compiler/rustc_llvm/llvm-wrapper/Linker.cpp')
0 files changed, 0 insertions, 0 deletions
