| Age | Commit message (Collapse) | Author | Lines |
|
Use the span we save in the PathSegment for a method call, rather than searching for it in the text.
Fixes https://github.com/nrc/rls-analysis/issues/111
|
|
|
|
Fix a bunch of minor save-analysis bugs
r? @eddyb
|
|
Adds an `IsAuto` field to `ItemTrait` which flags if the trait was
declared as an `auto trait`.
Auto traits cannot have generics nor super traits.
|
|
DefaultImpl is a highly confusing name for what we now call auto impls,
as in `impl Send for ..`. The name auto impl is not formally decided
but for sanity anything is better than `DefaultImpl` which refers
neither to `default impl` nor to `impl Default`.
|
|
save-analysis: support unions
r? @eddyb
|
|
Emit crate disambiguators in save-analysis data
Needed for https://github.com/nrc/rls-analysis/issues/93.
Blocked by https://github.com/nrc/rls-data/pull/11. (For now, this pulls my branch [rls-data/crate-source](https://github.com/Xanewok/rls-data/tree/crate-source))
This will allow to disambiguate different crates types/versions when indexing resulting save-analysis data (most importantly allow to support bin+lib and different crate versions).
r? @nrc
|
|
Fixes https://github.com/nrc/rls-analysis/issues/78
|
|
Fixes https://github.com/nrc/rls-analysis/issues/77
|
|
fixes https://github.com/nrc/rls-analysis/issues/52
|
|
This special cases the function type sugar in paths and deals with traits bounds as just the path parts. That required refactoring the path collector to distinguish between variable decls and references in patterns, basically just to please the borrow checker.
cc https://github.com/nrc/rls-analysis/issues/37
|
|
|
|
|
|
|
|
|
|
|
|
support generics in each variant of TraitItem and ImplItem
|
|
|
|
0.10 -> 0.11
This will allow for more fine-grained save analysis for enum variants
(tuple and struct)
|
|
|
|
This commit moves the `crates` method to a query and then migrates all callers
to use a query instead of the now-renamed `crates_untracked` method where
possible.
Closes #41417
|
|
The main use of `CrateStore` *before* the `TyCtxt` is created is during
resolution, but we want to be sure that any methods used before resolution are
not used after the `TyCtxt` is created. This commit starts moving the methods
used by resolve to all be named `{name}_untracked` where the rest of the
compiler uses just `{name}` as a query.
During this transition a number of new queries were added to account for
post-resolve usage of these methods.
|
|
|
|
Fixes #41701.
|
|
rustc: Add `Local` to the HIR map of parents
When walking parents for lints we want to be sure to hit `let` statements which
can have attributes, so hook up these statements in the HIR map.
Closes #43910
|
|
|
|
|
|
Like #43008 (f668999), but _much more aggressive_.
|
|
Fix "Mis-calculated spans" errors from `-Z save-analysis` + refactoring
Removed the path span extraction methods from `SpanUtils`:
* spans_with_brackets
* spans_for_path_segments
* spans_for_ty_params
Use the `span` fields in `PathSegment` and `TyParam` instead.
(Note that since it processes `ast::Path` not a qualified path (`hir::QPath` / `ast::QSelf`), UFCS path will be flattened: `<Foo as a::b::c::Trait>::D::E::F::g` will be seen as `a::b::c::Trait::D::E::F::g`.)
Fix #43796. Close #41478.
r? @nrc
|
|
Use hir::ItemLocalId as keys in TypeckTables.
This PR makes `TypeckTables` use `ItemLocalId` instead of `NodeId` as key. This is needed for incremental compilation -- for stable hashing and for being able to persist and reload these tables. The PR implements the most important part of https://github.com/rust-lang/rust/issues/40303.
Some notes on the implementation:
* The PR adds the `HirId` to HIR nodes where needed (`Expr`, `Local`, `Block`, `Pat`) which obviates the need to store a `NodeId -> HirId` mapping in crate metadata. Thanks @eddyb for the suggestion! In the future the `HirId` should completely replace the `NodeId` in HIR nodes.
* Before something is read or stored in one of the various `TypeckTables` subtables, the entry's key is validated via the new `TypeckTables::validate_hir_id()` method. This makes sure that we are not mixing information from different items in a single table.
That last part could be made a bit nicer by either (a) new-typing the table-key and making `validate_hir_id()` the only way to convert a `HirId` to the new-typed key, or (b) just encapsulate sub-table access a little better. This PR, however, contents itself with not making things significantly worse.
Also, there's quite a bit of switching around between `NodeId`, `HirId`, and `DefIndex`. These conversions are cheap except for `HirId -> NodeId`, so if the valued reviewer finds such an instance in a performance critical place, please let me know.
Ideally we convert more and more code from `NodeId` to `HirId` in the future so that there are no more `NodeId`s after HIR lowering anywhere. Then the amount of switching should be minimal again.
r? @eddyb, maybe?
|
|
Use the `span` field in PathSegment and TyParam instead.
Fix #43796. Close #41478.
|
|
|
|
|
|
|
|
|
|
TypeckTables.
|
|
|
|
|
|
|
|
permits
|
|
|
|
|
|
|
|
|
|
And cargo update
|
|
|
|
|
|
|
|
Replaces the output path env var. Can be passed to save-analysis via a function call or env var.
|
|
Addresses the second part of #42171 by removing the `TraitRef` from
`ProjectionTy`, and directly storing its `Substs`.
Closes #42171.
|