Commit Graph

228 Commits

Author SHA1 Message Date
bors
e91fdf7860 Auto merge of #15959 - Veykril:macro-shower3, r=lnicola
TokenMap -> SpanMap rewrite

Opening early so I can have an overview over the full diff more easily, still very unfinished and lots of work to be done.

The gist of what this PR does is move away from assigning IDs to tokens in arguments and expansions and instead gives the subtrees the text ranges they are sourced from (made relative to some item for incrementality). This means we now only have a single map per expension, opposed to map for expansion and arguments.

A few of the things that are not done yet (in arbitrary order):
- [x] generally clean up the current mess
- [x] proc-macros, have been completely ignored so far
- [x] syntax fixups, has been commented out for the time being needs to be rewritten on top of some marker SyntaxContextId
- [x] macro invocation syntax contexts are not properly passed around yet, so $crate hygiene does not work in all cases (but most)
  - [x] builtin macros do not set spans properly, $crate basically does not work with them rn (which we use)
~~- [ ] remove all uses of dummy spans (or if that does not work, change the dummy entries for dummy spans so that tests will not silently pass due to havin a file id for the dummy file)~~
  - [x] de-queryfy `macro_expand`, the sole caller of it is `parse_macro_expansion`, and both of these are lru-cached with the same limit so having it be a query is pointless
- [x] docs and more docs
- [x] fix eager macro spans and other stuff
  - [x] simplify include! handling
- [x] Figure out how to undo the sudden `()` expression wrapping in expansions / alternatively prioritize getting invisible delimiters working again
- [x] Simplify InFile stuff and HirFIleId extensions
~~- [ ] span crate containing all the file ids, span stuff, ast ids. Then remove the dependency injection generics from tt and mbe~~

Fixes https://github.com/rust-lang/rust-analyzer/issues/10300
Fixes https://github.com/rust-lang/rust-analyzer/issues/15685
2023-12-04 19:59:53 +00:00
David Barsky
914a1570e2 internal: bump triomphe to 0.1.10 2023-11-28 10:27:17 -05:00
Lukas Wirth
05f375eae2 hygiene 2.0 2023-11-28 10:55:39 +01:00
Laurențiu Nicola
480cb60be3 Bump libc 2023-11-16 21:48:49 +02:00
Laurențiu Nicola
c6fad55c98 Bump bitflags 2023-11-15 21:20:47 +02:00
Laurențiu Nicola
3ed27d21f2 Bump cargo_metadata 2023-11-15 21:18:49 +02:00
Laurențiu Nicola
2814d646cb Bump rayon 2023-11-15 21:14:56 +02:00
Laurențiu Nicola
b18ce4f8ea Bump xshell 2023-11-15 21:12:18 +02:00
Laurențiu Nicola
83e6d7938c Bump tracing-tree again 2023-11-15 21:08:35 +02:00
Laurențiu Nicola
829cf8db4c Bump dissimilar 2023-11-15 13:34:56 +02:00
Laurențiu Nicola
572583262c Bump text-size 2023-11-15 13:33:03 +02:00
Laurențiu Nicola
1fc056ec93 Bump indexmap 2023-11-15 13:21:34 +02:00
Laurențiu Nicola
2bfd6b659d Bump serde_json 2023-11-15 13:17:36 +02:00
Laurențiu Nicola
970a796368 Bump serde 2023-11-15 13:16:07 +02:00
Laurențiu Nicola
cb8434e594 Bump either 2023-11-15 13:07:36 +02:00
Laurențiu Nicola
2dbdaa247b Bump tracing-subscriber 2023-11-15 13:04:39 +02:00
Laurențiu Nicola
d83620a5ba Bump tracing-tree 2023-11-15 13:01:54 +02:00
Laurențiu Nicola
f53368dd3f Bump tracing 2023-11-15 13:00:32 +02:00
Laurențiu Nicola
f66df10f87 Bump itertools 2023-11-15 12:53:56 +02:00
Laurențiu Nicola
dfc885e0fd Bump anyhow 2023-11-15 12:49:32 +02:00
shogo-nakano-desu
1e11a55f98 refactor: remove unnecesary deps that are blended in when rebase 2023-09-20 22:55:52 +09:00
shogo-nakano-desu
f671b0b864 refactor: move implementation inside anymap crate into stdx crate 2023-09-20 09:02:10 +09:00
shogo-nakano-desu
4b3257a365 refactor: port anymap 2023-09-20 09:02:05 +09:00
hkalbasi
f4704bc8ae Switch to in-tree rustc dependencies with a cfg flag 2023-09-15 18:10:11 +03:30
Lukas Wirth
10b0cd7047 Replace format-args parser with upstream fork 2023-09-07 11:37:59 +02:00
Alex Kladov
43e868807e internal: up lsp-server 2023-08-22 11:42:53 +01:00
Alex Kladov
343ee8bacf internal: unpin serde
Sered no longer uses blobs as of

https://github.com/serde-rs/serde/pull/2590

As such, there's no longer need for us to pin it.

Note that this doesn't upgrade serde version we use: I am fairly
confident that the blobs are already there are fine, and now I am fairly
confident that all future versions of serde will be fine as well.
2023-08-21 14:29:18 +01:00
Alex Kladov
1cebc0ca13 internal: post-bump lsp-server version 2023-08-19 15:28:32 +01:00
Alex Kladov
6c46b98a95 fix: avoid problematic serde release
serde 1.0.172 and up rely on opaque non-reproducible binary blobs to
function, explicitly not providing a library-level opt-out.

This is problematic for two reasons:

- directly, unauditable binary blobs are a security issue.
- indirectly, it becomes much harder to predict future behaviors of the
  crate.

As such, I am willing to go on a limb here and forbid building
rust-analyzer with those versions of serde. Normally, my philosophy is
to defer the choice to the end user, but it's also a design constraint
of rust-analyzer that we don't run random binaries downloaded from the
internet without explicit user's concent.

Concretely, this upper-bounds serde for both rust-analyzer workspace, as
well as the lsp-server lib.

See https://github.com/serde-rs/serde/issues/2538 for wider context.
2023-08-19 14:14:23 +01:00
Alex Kladov
dadbfe7f4b upgrade lsp server 2023-08-19 13:36:07 +01:00
Laurențiu Nicola
424da10077 Bump rust-version to 1.70 and use the workspace one in xtask 2023-07-14 16:15:26 +03:00
Lukas Wirth
28fcd1bdd7 Split out project loading capabilities from rust-analyzer crate 2023-07-03 17:40:31 +02:00
David Lattimore
0810827b97 Don't specify proc-macro-test version
proc-macro-test is only used as a dev-dependency and isn't published to
crates.io, so a version doesn't make sense. Having a version also breaks
automatic publishing.
2023-07-02 19:06:20 +10:00
Lukas Wirth
e5c65071bc Disconnect library crate dependencies from workspace dependencies 2023-06-22 11:50:52 +02:00
Lukas Wirth
8823db6c78 Bump more deps 2023-06-22 11:44:10 +02:00
Lukas Wirth
4fa3f1ef5c Bump serde 2 things 2023-06-22 11:44:10 +02:00
David Lattimore
5c8d1a46b5 Use lib crates from crates.io
See lib/README.md for justification
2023-06-21 16:10:17 +10:00
David Lattimore
fb3e54ef05 Release lsp-server 0.7.1 2023-06-20 13:53:39 +10:00
David Lattimore
a0467c546c Release la-arena 0.3.1 2023-06-20 13:53:39 +10:00
David Lattimore
bea3a33d84 Change in-tree libs to workspace dependencies 2023-06-20 13:53:39 +10:00
Lukas Wirth
f9a9e40c0a Update builtin attribute list 2023-06-04 10:02:11 +02:00
Lukas Wirth
099b5b3b15 internal: Bump rustc_lexer 2023-05-18 10:17:40 +02:00
Ariel Davis
594a41e7bf Use pre.1, tweak comment 2023-05-06 00:51:25 -07:00
Ariel Davis
4b28ad92e9 Make text-size a workspace dep 2023-05-06 00:49:23 -07:00
Ariel Davis
85dd7b22b4 Use nohash_hasher, rm comment 2023-05-06 00:49:23 -07:00
Laurențiu Nicola
7197a27028 Use triomphe Arc 2023-05-02 20:02:43 +03:00
Lukas Wirth
1456b53051 Bump smol-str 2023-04-11 14:39:19 +02:00
Lukas Wirth
39e86e78c3 Bump Cargo.lock 2023-03-25 15:12:39 +01:00
Lukas Wirth
3c0f20a7bd internal: Enable smallvec's union feature 2023-02-14 17:01:01 +01:00
bors
fa874627f0 Auto merge of #13969 - Veykril:workspace.dependencies, r=Veykril
Use workspace.dependencies to declare local dependencies
2023-01-17 10:29:27 +00:00
Lukas Wirth
bed4db3c62 Use workspace.dependencies to declare local dependencies 2023-01-17 10:52:26 +01:00
Lukas Wirth
e4858fe480 Specify authors, edition and license via workspace.package 2023-01-16 16:44:00 +01:00
Lukas Wirth
679df2adf1 Specify rust-version via workspace.package 2023-01-16 16:33:01 +01:00
Ryo Yoshida
310a72bf47
Bump chalk to 0.86
Two breaking changes:
- `TypeFolder` has been split into `TypeFolder` and `FallibleTypeFolder`
- `ProjectionTy::self_type_parameter()` has been removed
2022-10-16 19:23:34 +09:00
Peh
1f011fa4a3 style: rename crates to kebab case 2022-05-01 10:48:58 +00:00
Laurențiu Nicola
0e0ad0377c Drop resolver and authors manifest entries 2021-10-25 18:12:40 +03:00
Lukas Wirth
b219a4c465 internal: Parse const trait bounds 2021-10-19 14:20:00 +02:00
Jonas Schievink
05b3a4bc93 Build test-macros in a build script 2021-06-09 17:16:52 +02:00
Dawer
9899bb450a minor: reenable incremental test builds 2021-05-31 12:15:40 +05:00
Jonas Schievink
c9ba634627 reenable incremental release builds 2021-05-31 01:12:11 +02:00
Jonas Schievink
b12d8dcb82 Don't force-disable incremental 2021-05-30 23:46:39 +02:00
Aleksey Kladov
4b5600b2e8 internal: use modern resolever
I don't think this affects us, but better to stick to modern
practicies.
2021-05-11 13:06:35 +03:00
Aleksey Kladov
2a4819ca19 Disable more incremental 2021-05-08 20:00:15 +03:00
Aleksey Kladov
1d88a3f4a2 internal: disable broken incremental builds 😿 2021-05-08 13:36:06 +03:00
Jonas Schievink
976a3226fe Don't store call-site text offsets in hygiene info 2021-05-06 19:59:54 +02:00
Lukas Wirth
cb863390f2 Handle self/super/crate in PathSegment as NameRef 2021-01-15 19:21:23 +01:00
Aleksey Kladov
4c4e54ac8a prepare to publish el libro de arena 2021-01-14 19:06:02 +03:00
Jonas Schievink
c1cb595382 Move to upstream macro_rules! model 2020-12-15 15:37:37 +01:00
Florian Diebold
bca51e3519 Upgrade Chalk to 0.36
Quite a few changes, because Chalk got rid of the `ApplicationTy` nesting.
2020-10-30 18:57:55 +01:00
Laurențiu Nicola
cca330ef53 Remove release build overrides 2020-10-09 19:55:30 +03:00
Aleksey Kladov
bbb1c617b9 Speedup tests in dev mode 2020-08-18 17:44:51 +02:00
Veetaha
f92bfb5807 Gzip artifacts
Co-authored-by: bjorn3 <bjorn3@users.noreply.github.com>

Override miniz_oxide to build it with optimizations

Building this crate with optimizations decreases the gzipping
part of `cargo xtask dist` from `30-40s` down to `3s`,
the overhead for `rustc` to apply optimizations is miserable on this background
2020-07-07 23:30:11 +03:00
Laurențiu Nicola
ddcd98f604 Disable optimizations for tracing-attributes 2020-07-01 20:51:09 +03:00
Florian Diebold
c8a4bb1445 Upgrade Chalk
Chalk newly added TypeName::Never and Array; I implemented the conversion for
Never, but not Array since that expects a const argument.
2020-05-27 21:07:08 +02:00
Florian Diebold
3484d727c3 Extend analysis-stats a bit
This adds some tools helpful when debugging nondeterminism in analysis-stats:
 - a `--randomize` option that analyses everything in random order
 - a `-vv` option that prints even more detail

Also add a debug log if Chalk fuel is exhausted (which would be a source of
nondeterminism, but didn't happen in my tests).

I found one source of nondeterminism (rust-lang/chalk#331), but there are still
other cases remaining.
2020-02-15 18:04:01 +01:00
Laurențiu Nicola
f83154d4bf Disable optimizations for some build-time crates 2020-01-31 21:49:44 +02:00
Aleksey Kladov
dde64aa744 Stick to defaulter release profile 2020-01-11 22:15:27 +01:00
Giles Cope
42942fc662 Reducing binary size and optimising a bit more. 2020-01-09 22:11:25 +00:00
Aleksey Kladov
193b1a7437 ⬆️ rowan 2019-12-04 17:15:55 +01:00
Aleksey Kladov
b8b81846ca Speedup builds for users 2019-11-15 21:18:44 +03:00
Aleksey Kladov
9a04426617 Disable debuginfo in dev builds
Hopefully, this makes printf debugging faster!
2019-11-11 10:11:46 +03:00
Aleksey Kladov
5376c769f0 rename tools -> xtask 2019-10-17 23:14:05 +03:00
Aleksey Kladov
7b15c4f7ae WIP: move to xtasks 2019-10-17 22:54:38 +03:00
Aleksey Kladov
9a7c8d4b0f scale website back
We have dedicated https://rust-analyzer.github.io/ now
2019-10-17 22:37:01 +03:00
Aleksey Kladov
e4eb970273 save disk space 2019-10-11 11:06:28 +03:00
Aleksey Kladov
798dc2ca80 start GitHub pages 2019-09-02 14:42:23 +03:00
Aleksey Kladov
40c10932cd smaller debuginfo in release 2019-07-22 18:30:39 +03:00
Aleksey Kladov
9d7cb8ce80 ⬆️ salsa 2019-06-07 09:44:28 +03:00
Aleksey Kladov
b3b096234a switch to panic-safe salsa 2019-06-04 13:30:07 +03:00
Aleksey Kladov
54f77ad68d switch to upstream salsa 2019-05-30 13:05:09 +03:00
Aleksey Kladov
18ed351747 ⬆️ parking_lot 2019-05-30 12:02:30 +03:00
Aleksey Kladov
47672726d8 ⬆️ lsp 2019-04-21 15:17:22 +03:00
Aleksey Kladov
fa12ed2b8f switch to official extend selection API 2019-04-21 12:13:48 +03:00
Aleksey Kladov
dd45697e53 update salsa 2019-01-15 15:06:45 +03:00
Aleksey Kladov
db43b44f71 update cargo_metadata 2019-01-14 16:15:25 +03:00
Aleksey Kladov
64455ad701 use unwinding for cancelation 2019-01-10 12:20:32 +03:00
Aleksey Kladov
cf20ecae9f unwind on cancel 2019-01-09 22:51:05 +03:00
Georg Semmler
e7bf5dc940
Fix rev to deleted branch 2019-01-09 16:33:45 +01:00
Aleksey Kladov
141ab166cf switch to newer cargo-metadata 2019-01-08 19:36:09 +03:00
Aleksey Kladov
6c8e54aaee ⬆️ salsa 2019-01-04 22:31:13 +03:00
Aleksey Kladov
c97bb8f7e4 fix the cancellation bug 2018-12-30 11:09:17 +03:00
Aleksey Kladov
13631a2955 ⬆️ salsa 2018-12-28 19:10:31 +03:00
Aleksey Kladov
532e68692d fix cancelation? 2018-12-27 21:02:55 +03:00
Aleksey Kladov
724862a1a4 workaround salsa/parking-log bug
https://github.com/salsa-rs/salsa/issues/99
https://github.com/Amanieu/parking_lot/issues/101
2018-12-22 16:45:57 +03:00
Aleksey Kladov
7a6f5164f3 enable incremental release 2018-12-20 12:15:38 +03:00
Aleksey Kladov
ca7e5905c1 more crate boilerplate 2018-12-09 13:33:16 +03:00
Aleksey Kladov
a261a1836b Move to rowan for syntax tree impl 2018-10-02 17:09:23 +03:00
Aleksey Kladov
c631b585a7 matching brace 2018-08-16 00:23:22 +03:00
Aleksey Kladov
18486a02fa indexing infra 2018-08-13 13:46:05 +03:00
Aleksey Kladov
7c67612b8a organizize 2018-08-10 22:33:29 +03:00
Aleksey Kladov
2e165ae82e logging 2018-08-10 17:49:45 +03:00
Aleksey Kladov
d7c5a6f308 Start lang server 2018-08-10 15:07:43 +03:00
Aleksey Kladov
a5dc5f1b5c Improve tree building 2018-08-08 21:14:18 +03:00
Aleksey Kladov
7264c3294b finer concurrency 2018-08-01 22:07:09 +03:00
Aleksey Kladov
1954df6336 drop the bombs 2018-08-01 14:55:37 +03:00
Aleksey Kladov
966e9db2b8 Extract libeditor 2018-08-01 10:40:07 +03:00
Aleksey Kladov
5d8cef4c0e update text-unit 2018-07-31 21:43:28 +03:00
Aleksey Kladov
aea86d154e stackless traversal 2018-07-30 23:45:10 +03:00
Aleksey Kladov
3b6a6f6673 Add render test functionality 2018-07-30 16:16:58 +03:00
Aleksey Kladov
8d9961b753 Migrate to text-unit 2018-07-28 13:07:10 +03:00
Aleksey Kladov
bb381a7ff7 Move tools to a separate package 2018-02-03 12:51:06 +03:00
Christopher Durham
4de3c97b2a Enforce rustfmt format 2018-01-27 18:31:23 -05:00
Aleksey Kladov
4c10c31be3 D: start documenting stuff 2018-01-10 21:58:38 +03:00
Aleksey Kladov
9e4052cc2e Test utils 2018-01-07 14:56:08 +03:00
Aleksey Kladov
171baf4c48 Simple identifier lexer 2017-12-29 23:33:04 +03:00
Aleksey Kladov
5276a7d3be Grammar in ron 2017-12-29 01:21:54 +03:00
Aleksey Kladov
45fce4b3ef Lexer testing infra 2017-12-29 00:27:56 +03:00
Aleksey Kladov
e132280844 Start library 2017-12-28 23:55:16 +03:00