Commit graph

157 commits

Author SHA1 Message Date
Niko Matsakis
ce88a8f9ca apply cargo fmt 2024-05-25 16:25:06 -04:00
Niko Matsakis
68502ab27f 'db all the things 2024-05-24 07:16:50 -04:00
Niko Matsakis
1560634f96 support methods with 'db lifetimes 2024-05-24 07:16:50 -04:00
Niko Matsakis
b005820494 add a derive for DebugWithDb 2024-05-24 07:16:50 -04:00
Niko Matsakis
4f4d01958f generate a custom std::fmt::Debug impl
This leads less representation information
and in particular avoids serializing pointers.
2024-05-24 07:16:50 -04:00
Niko Matsakis
d98485d3cb add a derive for salsa::Update
And a test for it. This is required if you
want to have structures in your tracked structs.

Looks we need one for salsa::DebugWithDb, too.
2024-05-24 07:16:50 -04:00
Niko Matsakis
2800076857 update to syn 2.0 2024-05-24 07:16:50 -04:00
Niko Matsakis
06b70975e9 impl Update/Send/Sync
and add dedicated tests for that
2024-05-24 07:16:50 -04:00
Niko Matsakis
b4b49fbd1b split the Id conversion traits
We now have AsId (always present)
and FromId/LookupId (sometimes present).

AsId is no longer part of the
salsa public interface.

Replace the ad-hoc `salsa_id` etc methods with
calls to `AsId::as_id`.
2024-05-24 07:16:50 -04:00
Niko Matsakis
7519c3e2a6 extend IdentityInterner to be based on LookupId 2024-05-24 07:16:50 -04:00
Niko Matsakis
ab70786536 introduce LookupId trait
We are going to need it for tracked functions.
2024-05-24 07:16:50 -04:00
Niko Matsakis
cf2fa671f5 introduce IdLookup trait
We are going to need it for tracked functions.
2024-05-24 07:16:50 -04:00
Niko Matsakis
d361e8adfb add a 'db argument to SalsaStruct 2024-05-24 07:16:50 -04:00
Niko Matsakis
9607638d5d permit interned structs with lifetimes 2024-05-24 07:16:50 -04:00
Niko Matsakis
9d8a60b617 parameterize salsa_struct module 2024-05-24 07:16:50 -04:00
Niko Matsakis
0b8c27bc30 rename from TrackedStruct to just Struct
this will let us use different packages
but the same struct name from salsa struct
2024-05-24 07:16:50 -04:00
Niko Matsakis
5095d79d13 return a pointer from interning, not just id 2024-05-24 07:16:50 -04:00
Niko Matsakis
d92f2aa0a5 factor out useful helper fn 2024-05-24 07:16:50 -04:00
Niko Matsakis
af94b253be debug dump for interned struct tokens 2024-05-24 07:16:50 -04:00
Niko Matsakis
4822013523 permit interned data to take 'db lifetime 2024-05-24 07:16:50 -04:00
Niko Matsakis
d190bebcac introduce helper functions
We'll need these for use with tracked functions
2024-05-24 07:16:50 -04:00
Niko Matsakis
97fc6a0920 rework interning to have a Configuration
This will permit GATs so that interned values
can carry lifetimes.
2024-05-24 07:16:50 -04:00
Niko Matsakis
54c9586b45 move interned-specific fns out of salsa struct
Salsa struct is already a grab-bag, best to keep
it to shared functionality.
2024-05-24 07:16:50 -04:00
Niko Matsakis
8ba6e606c0 generate configuration struct in salsa_struct
It will be shared between tracked structs and
interned structs.
2024-05-24 07:16:50 -04:00
Niko Matsakis
4f74037f41 pipe debug output through rustfmt
is there a nicer way to do this?!
2024-05-24 07:16:50 -04:00
Niko Matsakis
04e041b4a2 rework debugging to be more permanent 2024-05-24 07:16:50 -04:00
Niko Matsakis
fe4ff9816a support db lifetimes in fields 2024-05-24 07:16:50 -04:00
Niko Matsakis
a84777d5a7 permit <'db> on tracked struct
tracked structs with `'db` carry a pointer
and not an id.
2024-05-24 07:16:50 -04:00
Niko Matsakis
e95c8b21fb give fields a lifetime 2024-05-24 07:16:50 -04:00
Niko Matsakis
44a8a2f41c make fn input/value a GAT 2024-05-24 07:16:50 -04:00
Niko Matsakis
b050bd874a remove Key from Fn configuration
Just use salsa::Id for the most part.
2024-05-24 07:16:50 -04:00
Niko Matsakis
6e2647fa50 just take salsa::Id instead of id structs 2024-05-24 07:16:50 -04:00
Niko Matsakis
cb1a2bb75b Revert "WIP permit 'db on tracked struct definitions (opt)"
This reverts commit 43b1b8ef3f98213279b9d0768847603299162f1f.
2024-05-24 07:16:50 -04:00
Niko Matsakis
b6311d8102 WIP permit 'db on tracked struct definitions (opt) 2024-05-24 07:16:50 -04:00
Niko Matsakis
5ce5e3c374 track and assert struct ingredient indices
We need a cheap way to compute field indices.
2024-05-24 07:16:50 -04:00
Niko Matsakis
79d24e0ad7 allow (but don't test) lifetime parameters 2024-05-24 07:16:50 -04:00
Niko Matsakis
e24ace24eb return &TrackedStructValue<C> from new_struct
This is a step towards the goal of keep a pointer
in the structs themselves.
2024-05-24 07:15:40 -04:00
Niko Matsakis
4533cd9e4b adopt the Salsa 3.0 Update` trait
Right now, this doesn't change much except the
behavior in the event that `Eq` is not properly
implemented. In the future, it will enable
the use of references and slices and things.
2024-05-24 07:15:40 -04:00
Niko Matsakis
82b672df3b allow various clippy lint groups 2024-04-05 05:48:11 -04:00
Niko Matsakis
5d6f883b18 improve spans for inputs 2024-04-04 06:24:07 -04:00
Niko Matsakis
1acbf2b0d4 improve spans for getters, constructors
This helps the IDE support.
2024-04-04 06:14:31 -04:00
Niko Matsakis
ce2f78290a add FIXME 2024-04-03 06:33:17 -04:00
Niko Matsakis
fd15c3a600 support customizing the DebugWithDb impl 2024-04-03 06:23:43 -04:00
Niko Matsakis
389aa66bcf print all fields in debug() but ignore deps
In a previous PR we added the `include_all_fields`
parameter to `DebugWithDb` to allow it to
not create spurious dependencies.

This PR takes a different approach: we simply
ignore the dependencies created during debug
operations. This is risky as it can create
incorrect dependencies, but it is way more
convenient and seems like what users probably
want.

It also means that `DebugWithDb` has a simpler
signature that matches the `Debug` trait again,
which seems good to me.
2024-04-03 05:59:11 -04:00
Niko Matsakis
8772961573 clippy, you are truly righteous and exacting 2024-04-02 07:05:17 -04:00
Niko Matsakis
39321ed920 fix clippy warnings 2024-04-02 06:29:44 -04:00
Niko Matsakis
54b33c335a create tracked field-ingredients 2024-04-02 06:08:55 -04:00
Niko Matsakis
f1d318a279
Merge pull request #450 from DropDemBits/placement-new-jars
Initialize jars in-place
2023-11-09 10:25:26 +00:00
Yoshitomo Nakanishi
b295f5aef7 Remove unnecessary mut from make_fn_return_ref 2023-10-08 20:41:55 +02:00
DropDemBits
f1a141a6c0
Update "Jars and Ingredients" to reflect the in-place init changes 2023-06-18 00:13:54 -04:00