Lukas Wirth
df5f1777b8
More symbol usage
2024-07-16 12:05:16 +02:00
Lukas Wirth
baa959fa99
Move lifetimes in front of type and const params but after self
2024-07-02 14:17:34 +02:00
Lukas Wirth
372e2d22e6
Make GenericParams::type_or_consts private
2024-07-02 13:45:48 +02:00
Lukas Wirth
1a929d6485
Fix lifetime parameters moving paramter defaults
2024-07-02 12:34:32 +02:00
Lukas Wirth
3168ab5b99
Enum variants are not generic def ids
2024-06-24 10:07:31 +02:00
Lukas Wirth
4c62e6b05f
Prevent re-allocation in CallableSig::from_params_and_return
2024-06-21 19:26:08 +02:00
Lukas Wirth
34ba8db3ed
Save allocations for empty generic_defaults query results
2024-06-21 19:21:27 +02:00
Lukas Wirth
2761b1e236
Don't attempt to compute implict sized clauses for empty generics
2024-06-21 19:10:57 +02:00
Lukas Wirth
4d709cc866
Save allocations for empty generic_predicates query results
2024-06-21 19:10:45 +02:00
Lukas Wirth
7a16e06009
Lazy generics
2024-06-21 18:38:37 +02:00
Lukas Wirth
480bfd5a7d
There can only be one self param
2024-06-21 17:55:16 +02:00
Lukas Wirth
cf2b757a1a
Light docs and privacy
2024-06-21 17:54:40 +02:00
Lukas Wirth
585cc9e014
Extract generics module
2024-06-21 10:55:05 +02:00
Wilfred Hughes
3874681cb6
Prefer plain trait definitions over macros for salsa
2024-06-13 17:32:06 -07:00
Lukas Wirth
855282fa53
internal: Don't unnecessarily clone ModPaths in early name res
2024-06-12 11:25:19 +02:00
dfireBird
8cbeb04ba2
fix lifetime bound var index in dyn trait
2024-05-05 23:40:34 +05:30
Lukas Wirth
c97ac34caa
Fix impl trait params not being counted properly
2024-05-02 13:56:10 +02:00
Lukas Wirth
8241d8a0b8
fix: Fix implicit ty args being lowered where they shouldn't
2024-05-02 11:53:53 +02:00
dfireBird
40a677ddf0
implement creating generics for impl traits in associated types
2024-04-29 23:55:02 +05:30
Lukas Wirth
bfe59bbdc8
fix: Fix attributes on generic parameters colliding in item tree
2024-04-27 13:15:36 +02:00
Lukas Wirth
8078c3d9e8
Bump chalk
2024-04-08 11:03:19 +02:00
Lukas Wirth
a82e028e30
Cleanup util::Generics method names
2024-04-06 14:29:40 +02:00
Lukas Wirth
336dee3415
Remove some allocs
2024-04-06 13:40:15 +02:00
Lukas Wirth
13890697eb
Simplify
2024-04-06 13:12:07 +02:00
Lukas Wirth
0927f86247
Replace static_lifetime usages with error_lifetime, lower outlives goals
2024-04-02 14:51:06 +02:00
dfireBird
0e54e2b55a
use references in Generics iter methods
2024-03-26 13:04:54 +05:30
dfireBird
b357bcab2b
modify insert_type_vars
for lifetimes
2024-03-19 10:14:45 +05:30
dfireBird
13301e7a1a
replace static_lifetime with new_lifetime_var where necessary
...
implemented suggested fixes and changes and fix merge conflicts
2024-03-18 17:53:09 +05:30
dfireBird
8d08b337fa
include lifetime in the filter for data layout in analysis-stats
...
clippy fixes
2024-03-18 17:18:08 +05:30
dfireBird
490391f576
fix HirDisplay inserting anonymous lifetimes and update tests
2024-03-18 17:18:08 +05:30
dfireBird
0669ae7faf
handle lifetimes separately in substs function
2024-03-18 17:18:08 +05:30
dfireBird
a6c8cbfd91
update Generics
iter methods to return GenericParamId
2024-03-18 17:18:08 +05:30
dfireBird
d6e3929841
include lifetime in ParamKind and in Generics::provenance_split
2024-03-18 17:18:08 +05:30
dfireBird
16493e301e
fix index returned for the use of BoundVar
2024-03-18 17:18:08 +05:30
dfireBird
f95b3d4cd2
implement resolving and lowering of Lifetimes
2024-03-18 17:18:06 +05:30
bors
d3eeadc242
Auto merge of #16852 - ShoyuVanilla:atpit, r=Veykril
...
feat: Implement ATPIT
Resolves #16584
Note: This implementation only works for ATPIT, not for TAIT.
The main hinderence that blocks the later is the defining sites of TAIT can be inner blocks like in;
```rust
type X = impl Default;
mod foo {
fn bar() -> super::X {
()
}
}
```
So, to figure out we are defining it or not, we should recursively probe for nested modules and bodies.
For ATPIT, we can just look into current body because `error[E0401]: can't use 'Self' from outer item` prevent such nested structures;
```rust
trait Foo {
type Item;
fn foo() -> Self::Item;
}
struct Bar;
impl Foo for Bar {
type Item = impl Default;
fn foo() -> Self::Item {
fn bar() -> Self::Item {
^^^^^^^^^^
|
use of `Self` from outer item
refer to the type directly here instead
5
}
bar()
}
}
```
But this implementation does not checks for unification of same ATPIT between different bodies, monomorphization, nor layout for similar reason. (But these can be done with lazyness if we can utilize something like "mutation of interned value" with `db`. I coundn't find such thing but I would appreciate it if such thing exists and you could let me know 😅 )
2024-03-18 10:38:24 +00:00
Shoyu Vanilla
d034ab0f92
Apply reviewed suggestions
2024-03-18 18:25:41 +09:00
Shoyu Vanilla
d2aba91a0c
feat: Implement ATPIT
2024-03-16 03:31:12 +09:00
Jesse Bakker
95828850b2
Fix panic with impl trait associated types in where clause
2024-03-13 18:02:15 +01:00
Shoyu Vanilla
a8f56112ea
fix: Function argument type inference with associated type impl trait
2024-03-06 21:16:41 +09:00
Lukas Wirth
5136705fad
internal: Remove SELF_REF hack for self referential SyntaxContexts
2024-02-10 16:20:02 +01:00
Lukas Wirth
00303c3b67
Abstract over ItemTreeLoc
2024-02-10 11:37:59 +01:00
Johann Hemmann
71d4dba960
redundant_pattern_matching
2024-01-19 17:31:01 +01:00
Lukas Wirth
3a722bdf2e
feat:Record FnAbi
2024-01-19 15:15:23 +01:00
Johann Hemmann
fad4fa163c
cargo clippy --fix
2024-01-18 13:59:49 +01:00
Lukas Wirth
8f4f5a6cce
fix: Make value_ty query fallible
2024-01-16 12:09:40 +01:00
Lukas Wirth
180e9b2bbf
Cleanup
2024-01-15 12:22:51 +01:00
Lukas Wirth
d80d2fcae0
Eagerly lower enum variants in CrateDefMap construction
2024-01-15 10:24:14 +01:00
Lukas Wirth
06aaf20f10
Some minor perf improvements
2024-01-09 20:43:17 +01:00
Lukas Wirth
9083017c9d
Remove ModuleId
from TypeOwnerId
2023-12-14 14:11:57 +01:00