mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-11-16 17:58:16 +00:00
2bf81922f7
Consider these expples { 92 } async { 92 } 'a: { 92 } #[a] { 92 } Previously the tree for them were BLOCK_EXPR { ... } EFFECT_EXPR async BLOCK_EXPR { ... } EFFECT_EXPR 'a: BLOCK_EXPR { ... } BLOCK_EXPR #[a] { ... } As you see, it gets progressively worse :) The last two items are especially odd. The last one even violates the balanced curleys invariant we have (#10357) The new approach is to say that the stuff in `{}` is stmt_list, and the block is stmt_list + optional modifiers BLOCK_EXPR STMT_LIST { ... } BLOCK_EXPR async STMT_LIST { ... } BLOCK_EXPR 'a: STMT_LIST { ... } BLOCK_EXPR #[a] STMT_LIST { ... }
35 lines
886 B
TOML
35 lines
886 B
TOML
[package]
|
|
name = "syntax"
|
|
version = "0.0.0"
|
|
description = "Comment and whitespace preserving parser for the Rust language"
|
|
license = "MIT OR Apache-2.0"
|
|
repository = "https://github.com/rust-analyzer/rust-analyzer"
|
|
edition = "2018"
|
|
|
|
[lib]
|
|
doctest = false
|
|
|
|
[dependencies]
|
|
cov-mark = "2.0.0-pre.1"
|
|
itertools = "0.10.0"
|
|
rowan = "0.14.0"
|
|
rustc_lexer = { version = "725.0.0", package = "rustc-ap-rustc_lexer" }
|
|
rustc-hash = "1.1.0"
|
|
once_cell = "1.3.1"
|
|
indexmap = "1.4.0"
|
|
smol_str = "0.1.15"
|
|
|
|
stdx = { path = "../stdx", version = "0.0.0" }
|
|
text_edit = { path = "../text_edit", version = "0.0.0" }
|
|
parser = { path = "../parser", version = "0.0.0" }
|
|
profile = { path = "../profile", version = "0.0.0" }
|
|
|
|
[dev-dependencies]
|
|
rayon = "1"
|
|
expect-test = "1.1"
|
|
proc-macro2 = "1.0.8"
|
|
quote = "1.0.2"
|
|
ungrammar = "=1.14.5"
|
|
|
|
test_utils = { path = "../test_utils" }
|
|
sourcegen = { path = "../sourcegen" }
|