Skip to content

Rollup of 6 pull requests #136804

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 132 commits into from
Closed
Changes from 1 commit
Commits
Show all changes
132 commits
Select commit Hold shift + click to select a range
a8f5471
fix: upmap ranges in convert_tuple_struct_to_named_struct assist
vishruth-thimmaiah Jan 16, 2025
1f45995
manual: Convert to mdbook
Wilfred Jan 23, 2025
b46775a
Combine `pat_hyigene` and `expr_hygiene`
Veykril Jan 25, 2025
8e7a338
BodyCollector
Veykril Jan 25, 2025
d9c58c8
Cleanup body ast ptr defs
Veykril Jan 25, 2025
c679d56
Split out `ExpressionStore` from `Body`
Veykril Jan 25, 2025
bdebd86
Add GenericDefId::StaticId
Veykril Jan 26, 2025
1360b4c
In completion's expand, consider recursion stop condition (when we're…
ChayimFriedman2 Jan 26, 2025
5de2cd4
Support RFC 2396
ChayimFriedman2 Jan 26, 2025
9051647
Merge pull request #19038 from ChayimFriedman2/unused-unsafe
Veykril Jan 27, 2025
6db1411
Merge pull request #19037 from ChayimFriedman2/fix-other-test
Veykril Jan 27, 2025
1711a19
Merge pull request #19036 from Veykril/push-nprltlwvryxw
Veykril Jan 27, 2025
d18afd3
feat: Implement `default-field-values`
ShoyuVanilla Jan 22, 2025
5ca9f52
Handle missing fields diagnostics
ShoyuVanilla Jan 23, 2025
2622160
Merge record lit's ellipsis into pre-existing spread's variant
ShoyuVanilla Jan 26, 2025
faeaf4a
Compute diagnostics of a field body iff it has one
ShoyuVanilla Jan 26, 2025
c7463fe
Implement `HasResolver` and `HasModule` for `FieldId`
ShoyuVanilla Jan 26, 2025
ec89b7d
Add a test for field default value body as defining usage of TAIT
ShoyuVanilla Jan 26, 2025
e4e7c95
Fix a mistake in condition
ShoyuVanilla Jan 26, 2025
c093db0
Remove `has_default` from `FieldId`
ShoyuVanilla Jan 27, 2025
ad0aea4
Merge pull request #19001 from ShoyuVanilla/default-field-values
Veykril Jan 27, 2025
9a0504b
Fix #[rustc_deprecated_safe_2024]
ChayimFriedman2 Jan 27, 2025
86d5e29
Fix a missing standard token in semantic highlighting
ChayimFriedman2 Jan 27, 2025
238d7bd
Merge pull request #19045 from ChayimFriedman2/missing-token
Veykril Jan 27, 2025
0fe9d77
Merge pull request #19044 from ChayimFriedman2/deprecated-safe
Veykril Jan 27, 2025
5f2072c
Fix syntactic highlighting for renames
lnicola Jan 27, 2025
d60afec
Merge pull request #19047 from lnicola/rename-highlight
lnicola Jan 27, 2025
78feee8
Remove duplicate method from `hir::Type`
ChayimFriedman2 Jan 27, 2025
b4508dc
Don't suggest `into_iter().method()` on iterators
ChayimFriedman2 Jan 27, 2025
1ba8943
Report calling unsafe fn pointer as unsafe
ChayimFriedman2 Jan 27, 2025
26c5708
Prioritize formatting thread tasks in main_loop
Veykril Jan 27, 2025
30b6063
Merge pull request #19052 from Veykril/push-yqwutllwwyyp
Veykril Jan 27, 2025
8ed9227
Merge pull request #19049 from ChayimFriedman2/add-reference-ty
Veykril Jan 27, 2025
da33e7c
Merge pull request #19050 from ChayimFriedman2/iter-self
Veykril Jan 27, 2025
cadc468
Merge pull request #19051 from ChayimFriedman2/fn-ptr-unsafe
Veykril Jan 27, 2025
3dd95e3
Add FreeBSD as a target OS for TestDir to avoid warnings
vkrivopalov Jan 27, 2025
7268b3d
fix: Properly handle CRLF line endings in the syntax tree view
Giga-Bowser Jan 27, 2025
165f276
Merge pull request #19055 from vkrivopalov/fix-testdir-unused-variabl…
ChayimFriedman2 Jan 27, 2025
a9cd21f
Show status bar in RA output
darichey Jan 27, 2025
a4e6556
Back out "Remove `has_default` from `FieldId`"
davidbarsky Jan 27, 2025
ff2656d
Back out "Fix a mistake in condition"
davidbarsky Jan 27, 2025
f22e331
Back out "Add a test for field default value body as defining usage o…
davidbarsky Jan 27, 2025
9c1a7ab
Back out "Implement `HasResolver` and `HasModule` for `FieldId`"
davidbarsky Jan 27, 2025
6f723ee
Back out "Compute diagnostics of a field body iff it has one"
davidbarsky Jan 27, 2025
10089c2
Back out "Merge record lit's ellipsis into pre-existing spread's vari…
davidbarsky Jan 27, 2025
d039b10
Back out "Handle missing fields diagnostics"
davidbarsky Jan 27, 2025
0f9cdeb
Back out "feat: Implement `default-field-values`"
davidbarsky Jan 27, 2025
1eb9f5e
Fix scip inherent impl overflow
darichey Jan 28, 2025
8e68c3f
Disable `Receiver` based autoderef temporarily
Veykril Jan 28, 2025
82efe0f
Merge pull request #19061 from Veykril/push-rwyqqtqmnput
Veykril Jan 28, 2025
0a2221d
Fix scip `crate` symbol name
darichey Jan 28, 2025
f70ac25
Merge pull request #19057 from darichey/status-bar-in-output
Veykril Jan 28, 2025
8ecb754
Merge pull request #19056 from Giga-Bowser/fix-syntax-tree-crlf
Veykril Jan 28, 2025
d417284
Fix scip symbols for implicit modules
darichey Jan 28, 2025
a355626
Merge pull request #19015 from Wilfred/mdbook
Veykril Jan 28, 2025
f10b622
feat: Implement `default-field-values` only in parser
ShoyuVanilla Jan 28, 2025
19afce0
Update lsif_contains_generated_constant
darichey Jan 28, 2025
2386e95
Merge pull request #19063 from davidbarsky/davidbarsky/backout-struct…
davidbarsky Jan 28, 2025
db07adf
try to infer array type from slice pattern
alibektas Jan 28, 2025
fc6c6b4
add test, bless tests
alibektas Jan 28, 2025
14ab466
Equip infer_pat_* with declaration origin
alibektas Jan 28, 2025
437921f
call infer_pats from infer::expr with context
alibektas Jan 28, 2025
717d36a
Simplify Rc::as_ptr docs + typo fix
hkBst Jan 29, 2025
22b8339
Update TentHash to version 1.0
cessen Jan 29, 2025
ce8bace
Merge pull request #19067 from cessen/update_tenthash
lnicola Jan 29, 2025
0d9355e
Remove mutable syntax tree shenanigans from adjustment hints
Veykril Jan 29, 2025
9c30fec
Merge pull request #19070 from Veykril/push-wpqzmznymtrn
Veykril Jan 29, 2025
0cf275b
Fix #19071: ensure `completion_item_hash` serializes items uniquely
cessen Jan 29, 2025
6151865
Fix typo
cessen Jan 29, 2025
7ffccb0
Use `to_ne_bytes` instead of `to_le_bytes`
cessen Jan 29, 2025
da96fff
Merge pull request #19072 from cessen/concat_uniquely
lnicola Jan 30, 2025
e70b589
Stop running some release workflows on forks and update old URLs
lnicola Feb 1, 2025
bec452f
Merge pull request #19078 from lnicola/no-ci-forks
lnicola Feb 1, 2025
acb9544
More rustfmt hang investigations
Veykril Feb 2, 2025
3288929
Merge pull request #19080 from Veykril/push-wlqsvqsksupr
Veykril Feb 2, 2025
4d9be70
Split cache priming into distinct phases
Veykril Feb 3, 2025
3c83458
Merge pull request #19062 from darichey/scip-fix-module-names
Veykril Feb 3, 2025
806ec88
Revert tests::patterns::infer_pattern
alibektas Jan 28, 2025
5acbff8
Do not use make use of `InferenceResult::has_errors` flag for mir bui…
Veykril Feb 3, 2025
9c981b7
Merge pull request #19085 from Veykril/push-sknwykqmlott
Veykril Feb 3, 2025
a118b18
Fix some mir eval/lowerings
Veykril Feb 3, 2025
08d4b03
Merge pull request #19086 from Veykril/push-ponvylutpnww
Veykril Feb 3, 2025
93b72ce
Merge pull request #19066 from alibektas/slice_pattern_type_inference
Veykril Feb 3, 2025
4677d75
ci: stop mysql before removing it
marcoieni Feb 3, 2025
a373fb2
Expose symbol of `CrateName`
Veykril Feb 3, 2025
1ba7a38
Merge pull request #19084 from Veykril/push-muworpzpzqup
Veykril Feb 4, 2025
1ce2d7e
Prevent panics from tearing down worker threads
Veykril Feb 4, 2025
21ddcbb
Merge pull request #19093 from Veykril/push-lrvoookylnxp
Veykril Feb 4, 2025
9bf4fe4
line-index: don't try to use neon on big-endian aarch64.
he32 Feb 4, 2025
96f96a4
Merge pull request #19083 from he32/fix-arm64-be
lnicola Feb 4, 2025
5467091
Fix IDE resolution of `use` inside a body
ChayimFriedman2 Feb 4, 2025
9d81503
Fix a failing test
ChayimFriedman2 Feb 4, 2025
578ae16
Add a FIXME for feature(adt_const_params)
ChayimFriedman2 Feb 4, 2025
d958719
Merge pull request #19095 from ChayimFriedman2/fixme-adt_const_params
ChayimFriedman2 Feb 4, 2025
dfca140
Add Four Codegen Tests
veera-sivarajan Dec 21, 2024
4b1d83d
Merge pull request #19094 from ChayimFriedman2/use-body
lnicola Feb 5, 2025
f57caa1
Bump proc-macro2 in xtask
Veykril Feb 5, 2025
9c0af74
Merge pull request #19097 from Veykril/push-xmkmkwplqnlr
Veykril Feb 5, 2025
a7e9739
Merge pull request #18912 from vishruth-thimmaiah/fix_named_struct_as…
Veykril Feb 5, 2025
9bcb2b0
Use interior mutability for loaded `ProcMacrorv::expanders`
Veykril Feb 5, 2025
d18dd4d
Merge pull request #19099 from Veykril/push-qxylslwltsqy
Veykril Feb 5, 2025
ee7dc06
coverage: Store BCB node IDs in mappings, and resolve them in codegen
Zalathar Jan 20, 2025
20d051e
coverage: Defer part of counter-creation until codegen
Zalathar Jan 22, 2025
bf1f254
coverage: Don't create counters for code that was removed by MIR opts
Zalathar Jan 25, 2025
bd855b6
coverage: Remove the old code for simplifying counters after MIR opts
Zalathar Jan 25, 2025
98b16ea
closure parameter inlay hints
jnyfah Feb 6, 2025
57b2415
collapsing if statement
jnyfah Feb 6, 2025
e8955a8
fix: Don't emit empty scip occurrence for builtins
darichey Feb 6, 2025
bacc9df
fix: Resolve projection types before checking casts
ShoyuVanilla Feb 7, 2025
b27a0f4
Merge pull request #19105 from darichey/fix-scip-builtin-occurrences
Veykril Feb 7, 2025
cde8d92
Merge pull request #19106 from ShoyuVanilla/issue-18682
Veykril Feb 7, 2025
d3b80e1
minor changes
jnyfah Feb 7, 2025
8151886
Merge pull request #19104 from jnyfah/some-branch
Veykril Feb 7, 2025
2c22ae3
Update PRIVACY.md
BenjaminBrienen Feb 7, 2025
e7d5d30
Update README.md links for mdbook manual
Wilfred Feb 7, 2025
b6fd709
Organise chapters in mdbook sidebar
Wilfred Feb 7, 2025
236000b
Merge pull request #19114 from Wilfred/update_readme_for_mdbook
lnicola Feb 8, 2025
cac45e1
Merge pull request #19115 from Wilfred/sidebar_structure
lnicola Feb 8, 2025
4ac07f2
Merge pull request #19113 from BenjaminBrienen/patch-1
lnicola Feb 8, 2025
82162a7
doc: error url
ahaoboy Feb 9, 2025
d4f7c76
Merge pull request #19120 from ahaoboy/patch-1
ChayimFriedman2 Feb 9, 2025
9a73f5a
Git blame ignore recent formatting commit
ehuss Feb 9, 2025
879dc38
Preparing for merge from rust-lang/rust
lnicola Feb 10, 2025
15cd1f0
Merge from rust-lang/rust
lnicola Feb 10, 2025
24d7a14
Bump rustc crates
lnicola Feb 10, 2025
8fd713b
Merge pull request #19126 from lnicola/sync-from-rust
lnicola Feb 10, 2025
97e92e3
Rollup merge of #134626 - veera-sivarajan:five-codegen-tests, r=Mark-…
Zalathar Feb 10, 2025
7a88710
Rollup merge of #136053 - Zalathar:defer-counters, r=saethlin
Zalathar Feb 10, 2025
46c7e2c
Rollup merge of #136228 - hkBst:patch-28, r=Mark-Simulacrum
Zalathar Feb 10, 2025
fff8baa
Rollup merge of #136487 - marcoieni:disable-mysql-systemctl, r=Mark-S…
Zalathar Feb 10, 2025
ed94e34
Rollup merge of #136790 - ehuss:ignore-rustfmt-2024-again, r=compiler…
Zalathar Feb 10, 2025
1417031
Rollup merge of #136803 - lnicola:sync-from-ra, r=lnicola
Zalathar Feb 10, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Cleanup body ast ptr defs
  • Loading branch information
Veykril committed Jan 25, 2025
commit d9c58c86367e80b7926a1844317f77b2268121c4
149 changes: 74 additions & 75 deletions src/tools/rust-analyzer/crates/hir-def/src/body.rs
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,27 @@ impl HygieneId {
}
}

pub type ExprPtr = AstPtr<ast::Expr>;
pub type ExprSource = InFile<ExprPtr>;

pub type PatPtr = AstPtr<ast::Pat>;
pub type PatSource = InFile<PatPtr>;

pub type LabelPtr = AstPtr<ast::Label>;
pub type LabelSource = InFile<LabelPtr>;

pub type FieldPtr = AstPtr<ast::RecordExprField>;
pub type FieldSource = InFile<FieldPtr>;

pub type PatFieldPtr = AstPtr<Either<ast::RecordExprField, ast::RecordPatField>>;
pub type PatFieldSource = InFile<PatFieldPtr>;

pub type ExprOrPatPtr = AstPtr<Either<ast::Expr, ast::Pat>>;
pub type ExprOrPatSource = InFile<ExprOrPatPtr>;

pub type SelfParamPtr = AstPtr<ast::SelfParam>;
pub type MacroCallPtr = AstPtr<ast::MacroCall>;

/// The body of an item (function, const etc.).
#[derive(Debug, Eq, PartialEq)]
pub struct Body {
Expand Down Expand Up @@ -112,68 +133,6 @@ pub struct BodyCollector {
ident_hygiene: FxHashMap<ExprOrPatId, HygieneId>,
}

impl BodyCollector {
fn finish(
self,
body_expr: ExprId,
self_param: Option<BindingId>,
params: Box<[PatId]>,
) -> Body {
let Self {
block_scopes,
mut exprs,
mut labels,
mut pats,
mut bindings,
mut binding_owners,
mut binding_hygiene,
mut ident_hygiene,
mut types,
} = self;
exprs.shrink_to_fit();
labels.shrink_to_fit();
pats.shrink_to_fit();
bindings.shrink_to_fit();
binding_owners.shrink_to_fit();
binding_hygiene.shrink_to_fit();
ident_hygiene.shrink_to_fit();
types.shrink_to_fit();

Body {
exprs,
pats,
bindings,
labels,
binding_owners,
params,
self_param,
body_expr,
types,
block_scopes: block_scopes.into_boxed_slice(),
binding_hygiene,
ident_hygiene,
}
}
}

pub type ExprPtr = AstPtr<ast::Expr>;
pub type ExprSource = InFile<ExprPtr>;

pub type PatPtr = AstPtr<ast::Pat>;
pub type PatSource = InFile<PatPtr>;

pub type LabelPtr = AstPtr<ast::Label>;
pub type LabelSource = InFile<LabelPtr>;

pub type FieldPtr = AstPtr<ast::RecordExprField>;
pub type FieldSource = InFile<FieldPtr>;

pub type PatFieldPtr = AstPtr<Either<ast::RecordExprField, ast::RecordPatField>>;
pub type PatFieldSource = InFile<PatFieldPtr>;

pub type ExprOrPatPtr = AstPtr<Either<ast::Expr, ast::Pat>>;
pub type ExprOrPatSource = InFile<ExprOrPatPtr>;

/// An item body together with the mapping from syntax nodes to HIR expression
/// IDs. This is needed to go from e.g. a position in a file to the HIR
/// expression containing it; but for type inference etc., we want to operate on
Expand All @@ -198,7 +157,7 @@ pub struct BodySourceMap {
label_map: FxHashMap<LabelSource, LabelId>,
label_map_back: ArenaMap<LabelId, LabelSource>,

self_param: Option<InFile<AstPtr<ast::SelfParam>>>,
self_param: Option<InFile<SelfParamPtr>>,
binding_definitions: FxHashMap<BindingId, SmallVec<[PatId; 4]>>,

/// We don't create explicit nodes for record fields (`S { record_field: 92 }`).
Expand All @@ -210,7 +169,7 @@ pub struct BodySourceMap {

template_map: Option<Box<FormatTemplate>>,

expansions: FxHashMap<InFile<AstPtr<ast::MacroCall>>, MacroFileId>,
expansions: FxHashMap<InFile<MacroCallPtr>, MacroFileId>,

/// Diagnostics accumulated during body lowering. These contain `AstPtr`s and so are stored in
/// the source map (since they're just as volatile).
Expand All @@ -228,19 +187,63 @@ struct FormatTemplate {
/// The value stored for each capture is its template literal and offset inside it. The template literal
/// is from the `format_args[_nl]!()` macro and so needs to be mapped up once to go to the user-written
/// template.
implicit_capture_to_source: FxHashMap<ExprId, InFile<(AstPtr<ast::Expr>, TextRange)>>,
implicit_capture_to_source: FxHashMap<ExprId, InFile<(ExprPtr, TextRange)>>,
}

#[derive(Debug, Eq, PartialEq)]
pub enum BodyDiagnostic {
InactiveCode { node: InFile<SyntaxNodePtr>, cfg: CfgExpr, opts: CfgOptions },
MacroError { node: InFile<AstPtr<ast::MacroCall>>, err: ExpandError },
UnresolvedMacroCall { node: InFile<AstPtr<ast::MacroCall>>, path: ModPath },
MacroError { node: InFile<MacroCallPtr>, err: ExpandError },
UnresolvedMacroCall { node: InFile<MacroCallPtr>, path: ModPath },
UnreachableLabel { node: InFile<AstPtr<ast::Lifetime>>, name: Name },
AwaitOutsideOfAsync { node: InFile<AstPtr<ast::AwaitExpr>>, location: String },
UndeclaredLabel { node: InFile<AstPtr<ast::Lifetime>>, name: Name },
}

impl BodyCollector {
fn finish(
self,
body_expr: ExprId,
self_param: Option<BindingId>,
params: Box<[PatId]>,
) -> Body {
let Self {
block_scopes,
mut exprs,
mut labels,
mut pats,
mut bindings,
mut binding_owners,
mut binding_hygiene,
mut ident_hygiene,
mut types,
} = self;
exprs.shrink_to_fit();
labels.shrink_to_fit();
pats.shrink_to_fit();
bindings.shrink_to_fit();
binding_owners.shrink_to_fit();
binding_hygiene.shrink_to_fit();
ident_hygiene.shrink_to_fit();
types.shrink_to_fit();

Body {
exprs,
pats,
bindings,
labels,
binding_owners,
params,
self_param,
body_expr,
types,
block_scopes: block_scopes.into_boxed_slice(),
binding_hygiene,
ident_hygiene,
}
}
}

impl Body {
pub(crate) fn body_with_source_map_query(
db: &dyn DefDatabase,
Expand Down Expand Up @@ -765,17 +768,15 @@ impl BodySourceMap {
self.expansions.get(&src).cloned()
}

pub fn macro_calls(
&self,
) -> impl Iterator<Item = (InFile<AstPtr<ast::MacroCall>>, MacroFileId)> + '_ {
pub fn macro_calls(&self) -> impl Iterator<Item = (InFile<MacroCallPtr>, MacroFileId)> + '_ {
self.expansions.iter().map(|(&a, &b)| (a, b))
}

pub fn pat_syntax(&self, pat: PatId) -> Result<ExprOrPatSource, SyntheticSyntax> {
self.pat_map_back.get(pat).cloned().ok_or(SyntheticSyntax)
}

pub fn self_param_syntax(&self) -> Option<InFile<AstPtr<ast::SelfParam>>> {
pub fn self_param_syntax(&self) -> Option<InFile<SelfParamPtr>> {
self.self_param
}

Expand Down Expand Up @@ -809,9 +810,7 @@ impl BodySourceMap {
self.expr_map.get(&src).copied()
}

pub fn expansions(
&self,
) -> impl Iterator<Item = (&InFile<AstPtr<ast::MacroCall>>, &MacroFileId)> {
pub fn expansions(&self) -> impl Iterator<Item = (&InFile<MacroCallPtr>, &MacroFileId)> {
self.expansions.iter()
}

Expand All @@ -831,7 +830,7 @@ impl BodySourceMap {
pub fn format_args_implicit_capture(
&self,
capture_expr: ExprId,
) -> Option<InFile<(AstPtr<ast::Expr>, TextRange)>> {
) -> Option<InFile<(ExprPtr, TextRange)>> {
self.template_map.as_ref()?.implicit_capture_to_source.get(&capture_expr).copied()
}

Expand Down