about summary refs log tree commit diff
path: root/src/tools/rust-analyzer/crates/parser
AgeCommit message (Collapse)AuthorLines
2024-09-04Parse builtin#asm expressionsLukas Wirth-10/+339
2024-09-04Add edition dependent keyword highlighting testsLukas Wirth-0/+6
2024-08-26Fix Return Type Syntax to include `..` (i.e. `method(..)` and not ↵Chayim Refael Friedman-15/+142
`method()`) as specified in the RFC
2024-08-16Properly account for editions in namesChayim Refael Friedman-0/+9
This PR touches a lot of parts. But the main changes are changing `hir_expand::Name` to be raw edition-dependently and only when necessary (unrelated to how the user originally wrote the identifier), and changing `is_keyword()` and `is_raw_identifier()` to be edition-aware (this was done in #17896, but the FIXMEs were fixed here). It is possible that I missed some cases, but most IDE parts should properly escape (or not escape) identifiers now. The rules of thumb are: - If we show the identifier to the user, its rawness should be determined by the edition of the edited crate. This is nice for IDE features, but really important for changes we insert to the source code. - For tests, I chose `Edition::CURRENT` (so we only have to (maybe) update tests when an edition becomes stable, to avoid churn). - For debugging tools (helper methods and logs), I used `Edition::LATEST`.
2024-08-15internal: Properly check the edition for edition dependent syntax kindsLukas Wirth-48/+120
2024-08-06Replace `[package.repository] = "…"` of published crates with ↵Vincent Esche-1/+1
`[package.repository.workspace] = true`
2024-08-06Add repository URL for published crates' missing `[package.repository]` fieldsVincent Esche-0/+1
2024-08-06Replace `"TBD"` with more helpful desciptions in published crates' ↵Vincent Esche-1/+1
`[package.description]` fields
2024-07-23fix: move `use` parsing to outer match armwinstxnhdw-18/+19
2024-07-23chore: update codegenswinstxnhdw-0/+73
2024-07-23feat: add arm for `use` type boundwinstxnhdw-0/+6
2024-07-20Add missing dyn parse special cases in 2015 editionLukas Wirth-70/+162
2024-07-19Fix edition used for include macro parsingLukas Wirth-1/+1
2024-07-19Parse contextual dyn keyword properly in edition 2015Lukas Wirth-8/+162
2024-07-19Prevent generated runner module from being format checkedLukas Wirth-0/+1
2024-07-19Parse `try` as a keyword only in edition 2018 and upLukas Wirth-39/+21
2024-07-19Add basic edition inline parser test supportLukas Wirth-153/+131
2024-07-18Rewrite inline parser test infra to generated proper rust test casesLukas Wirth-109/+839
2024-07-18Encode edition within FileId in the hir layerLukas Wirth-2/+5
2024-07-17Support rustc_skip_during_method_dispatchLukas Wirth-0/+4
2024-07-17string is not a keywordLukas Wirth-4/+11
2024-07-17Add always disabled gen parse supportLukas Wirth-22/+272
2024-07-17Derive kinds information from ungrammar fileLukas Wirth-235/+179
2024-07-07Run codegen commands as tests if their results are commitedLukas Wirth-1/+1
2024-07-07Move feature-doc generation to xtask codegenLukas Wirth-1/+0
2024-07-07Move parser test generation to xtaskLukas Wirth-125/+0
2024-07-03Fix up the syntax tree for macro 2.0Lukas Wirth-124/+118
2024-06-30Remove inline `rust_2018_idioms, unused_lifetimes` lint warn, Cargo.toml ↵Lukas Wirth-1/+0
already enforces this
2024-06-17fix: Fix pat fragment parsers choking on <eoi>Lukas Wirth-1/+1
2024-06-13internal: Fix rustdoc warningsWilfred Hughes-1/+1
`cargo doc` generates a bunch of warnings on rust-analyzer. Fix all the bare URL and empty code block warnings.
2024-06-06chore: Prefer tracing span shorthand macrosWilfred Hughes-3/+3
2024-05-30style: simplify string interpolationHamir Mahal-1/+1
2024-05-19Merge from rust-lang/rustLaurențiu Nicola-1/+1
2024-05-06Implement unsafe attribute parsingLukas Wirth-0/+505
2024-04-21Allow rust files to be used linkedProjectsLukas Wirth-0/+39978
2024-04-20Merge commit '55d9a533b309119c8acd13061581b43ae8840823' into sync-from-raLaurențiu Nicola-25/+119
2024-04-10Properly handle emojis as literal prefix in macrosEsteban Küber-1/+1
Do not accept the following ```rust macro_rules! lexes {($($_:tt)*) => {}} lexes!(🐛"foo"); ``` Before, invalid emoji identifiers were gated during parsing instead of lexing in all cases, but this didn't account for macro expansion of literal prefixes. Fix #123696.
2024-03-31Merge commit 'f5a9250147f6569d8d89334dc9cca79c0322729f' into sync-from-raLaurențiu Nicola-17/+165
2024-03-10Merge commit '574e23ec508064613783cba3d1833a95fd9a5080' into sync-from-raLaurențiu Nicola-69/+155
2024-02-18Merge commit 'ac998a74b3c8ff4b81c3eeb9a18811d4cc76226d' into sync-from-raLaurențiu Nicola-28/+279
2024-02-11Merge commit 'ddf105b646c6749a2de2451c9a499a354eec79c2' into sync-from-raLaurențiu Nicola-33/+340
2024-01-28Merge commit '7219414e81810fd4d967136c4a0650523892c157' into sync-from-raLaurențiu Nicola-8/+8
2024-01-25Rename the unescaping functions.Nicholas Nethercote-2/+2
`unescape_literal` becomes `unescape_unicode`, and `unescape_c_string` becomes `unescape_mixed`. Because rfc3349 will mean that C string literals will no longer be the only mixed utf8 literals.
2024-01-21Merge commit 'a9116523604c998e7781f60d3b5a6f586e0414a9' into sync-from-raLaurențiu Nicola-50/+238
2024-01-18Rollup merge of #119172 - nnethercote:earlier-NulInCStr, r=petrochenkovMatthias Krüger-0/+1
Detect `NulInCStr` error earlier. By making it an `EscapeError` instead of a `LitError`. This makes it like the other errors produced when checking string literals contents, e.g. for invalid escape sequences or bare CR chars. NOTE: this means these errors are issued earlier, before expansion, which changes behaviour. It will be possible to move the check back to the later point if desired. If that happens, it's likely that all the string literal contents checks will be delayed together. One nice thing about this: the old approach had some code in `report_lit_error` to calculate the span of the nul char from a range. This code used a hardwired `+2` to account for the `c"` at the start of a C string literal, but this should have changed to a `+3` for raw C string literals to account for the `cr"`, which meant that the caret in `cr"` nul error messages was one short of where it should have been. The new approach doesn't need any of this and avoids the off-by-one error. r? ```@fee1-dead```
2024-01-15Merge commit '9d8889cdfcc3aa0302353fc988ed21ff9bc9925c' into sync-from-raLaurențiu Nicola-7/+70
2024-01-12Detect `NulInCStr` error earlier.Nicholas Nethercote-0/+1
By making it an `EscapeError` instead of a `LitError`. This makes it like the other errors produced when checking string literals contents, e.g. for invalid escape sequences or bare CR chars. NOTE: this means these errors are issued earlier, before expansion, which changes behaviour. It will be possible to move the check back to the later point if desired. If that happens, it's likely that all the string literal contents checks will be delayed together. One nice thing about this: the old approach had some code in `report_lit_error` to calculate the span of the nul char from a range. This code used a hardwired `+2` to account for the `c"` at the start of a C string literal, but this should have changed to a `+3` for raw C string literals to account for the `cr"`, which meant that the caret in `cr"` nul error messages was one short of where it should have been. The new approach doesn't need any of this and avoids the off-by-one error.
2024-01-03Merge commit '426d2842c1f0e5cc5e34bb37c7ac3ee0945f9746' into sync-from-ra2Laurențiu Nicola-0/+3
2023-12-11Merge commit '457b966b171b09a7e57acb710fbca29a4b3526f0' into sync-from-raLaurențiu Nicola-1/+1
2023-12-04Merge commit 'e402c494b7c7d94a37c6d789a216187aaf9ccd3e' into sync-from-raLaurențiu Nicola-42/+165