Edwin Cheng
74e846b9ec
Add L_DOLLAR and R_DOLLAR
2019-04-11 11:02:41 +08:00
Aleksey Kladov
faf526e021
migrate to untyped rowan
2019-04-09 10:26:51 +03:00
Lenard Pratt
b27fa33a9f
updated snapshots
2019-04-07 13:23:18 +01:00
Lenard Pratt
e175921932
Added ArrayExprKind,
...
changed the display for fixed array types,
Added Array Enum to ra_hir/expr
2019-04-07 13:23:14 +01:00
Lenard Pratt
2d73c909fe
Added inference of array length
2019-04-07 13:23:12 +01:00
robojumper
ca40ca93a5
Parse and infer tuple indices
2019-04-06 01:07:35 +02:00
Edwin Cheng
7abc06bd57
Add proper test for literals and fixed typo bug
2019-04-05 20:58:24 +08:00
Edwin Cheng
1ea0238e53
Add classify_literal and undo expose next_token
2019-04-05 18:45:19 +08:00
Edwin Cheng
1ab78d6056
Fix literal support in token tree to ast item list
2019-04-05 18:23:01 +08:00
bors[bot]
fdbebccd71
Merge #1076
...
1076: Const body inference r=flodiebold a=Lapz
This is the second part of #887 . I've added type inference on const bodies and introduced the DefWithBody containing Function, Const and Static. I want to add tests but im unsure on how I would go about testing that completions work.
Co-authored-by: Lenard Pratt <l3np27@gmail.com>
2019-04-02 19:01:54 +00:00
Lenard Pratt
88e22e9d70
Added const bodies and static body to the ast
...
and added inference the inference test
reduce code duplication
2019-04-02 19:21:36 +01:00
Aleksey Kladov
cf1caf5181
simplify
2019-04-02 19:15:13 +03:00
bors[bot]
0a758a2c48
Merge #1090
...
1090: always show token text r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-04-02 13:36:52 +00:00
Aleksey Kladov
7d6bd5d137
always show token text
2019-04-02 14:49:46 +03:00
Aleksey Kladov
e7a4b96d03
fix inner block doc comments
2019-04-02 14:42:47 +03:00
Aleksey Kladov
ab19ff16e5
add minimal comments
2019-04-02 13:02:23 +03:00
Aleksey Kladov
0e1e40676a
rename flavor to kind
2019-04-02 12:53:44 +03:00
Aleksey Kladov
cb5001c0a5
move extensions to submodules
2019-04-02 12:47:39 +03:00
Aleksey Kladov
f3a82c372c
remove flavor
2019-04-02 12:25:24 +03:00
Aleksey Kladov
5287a2506c
More future-proof comment kind
2019-04-02 12:18:52 +03:00
Aleksey Kladov
3f3ff2f0f4
fix comment naming
2019-04-02 10:48:59 +03:00
Aleksey Kladov
99e6438660
allow empty doc comments
2019-04-02 10:35:34 +03:00
Aleksey Kladov
ae282d8da6
add ast::tokens
2019-04-02 10:23:29 +03:00
Aleksey Kladov
f874d372bb
simplify
2019-04-02 10:09:52 +03:00
Aleksey Kladov
bd1f5ba222
move ast traits to a separate file
2019-04-02 10:03:19 +03:00
bors[bot]
c2912892ef
Merge #1084
...
1084: remove dead code r=matklad a=matklad
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-04-01 21:27:45 +00:00
Aleksey Kladov
8014116e5f
remove dead code
2019-04-02 00:14:57 +03:00
gfreezy
4ca51cfbcf
intelligently add parens when inlining local varaibles
2019-04-01 22:53:47 +08:00
Aleksey Kladov
9e213385c9
switch to new rowan
2019-04-01 12:06:24 +03:00
Ville Penttinen
3f62ab8f51
Add WherePred to allow predicate access in WhereClause
...
This also unifies parsing of WHERE_PRED bounds, now Lifetime bounds will also be
parsed using TYPE_BOUND_LIST
2019-03-31 13:20:56 +03:00
Ville Penttinen
55dcdb7d09
Add trait ast::TypeBoundsOwner
2019-03-31 10:56:48 +03:00
Ville Penttinen
23fdc562bf
Add new TYPE_BOUND_LIST and TYPE_BOUND syntax kinds
...
These are now used when parsing type bounds. In addition parsing paths inside a
bound now does not recursively parse paths, rather they are treated as separate
bounds, separated by +.
2019-03-30 17:11:21 +02:00
Lenard Pratt
7f3bf7cc73
Added defWithBody
2019-03-30 10:50:00 +00:00
Florian Diebold
c947c15ce1
Basics for trait method resolution
2019-03-25 21:28:36 +01:00
bors[bot]
c4ead49361
Merge #1034
...
1034: HIR diagnostics API r=matklad a=matklad
This PR introduces diagnostics API for HIR, so we can now start issuing errors and warnings! Here are requirements that this solution aims to fulfill:
* structured diagnostics: rather than immediately rendering error to string, we provide a well-typed blob of data with error-description. These data is used by IDE to provide fixes
* open set diagnostics: there's no single enum with all possible diagnostics, which hopefully should result in better modularity
The `Diagnostic` trait describes "a diagnostic", which can be downcast to a specific diagnostic kind. Diagnostics are expressed in terms of macro-expanded syntax tree: they store pointers to syntax nodes. Diagnostics are self-contained: you don't need any context, besides `db`, to fully understand the meaning of a diagnostic.
Because diagnostics are tied to the source, we can't store them in salsa. So subsystems like type-checking produce subsystem-local diagnostic (which is a closed `enum`), which is expressed in therms of subsystem IR. A separate step converts these proto-diagnostics into `Diagnostic`, by merging them with source-maps.
Note that this PR stresses type-system quite a bit: we now type-check every function in open files to compute errors!
Discussion on Zulip: https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Fwg-rls-2.2E0/topic/Diagnostics.20API
Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-03-25 11:38:46 +00:00
Aleksey Kladov
6c4b06e2e3
simplify
2019-03-25 10:59:42 +03:00
Aleksey Kladov
fcca35969d
allow dyn diagnostics
2019-03-25 10:52:12 +03:00
Marco Groppo
67055c47da
Target only the actual operator.
...
Renamed `BinExpr::op()` and `PrefixExpr::op()` to `op_kind`.
Now `op()` returns the `SyntaxNode`.
2019-03-24 22:21:22 +01:00
Aleksey Kladov
4fd8cfd6ad
replace todo with fixme
2019-03-23 11:07:09 +03:00
pcpthm
bf8e7930da
Fix reparsing failure when removing newline
2019-03-22 08:09:11 +09:00
pcpthm
edbc18516d
Fix reparsing bug on "{}{}"
2019-03-22 08:09:11 +09:00
pcpthm
7669113e7c
Completely ignore errors for reparse fuzz
2019-03-22 08:09:11 +09:00
pcpthm
c60ec02d75
Use template text to improve reparse fuzzing
2019-03-22 08:09:11 +09:00
pcpthm
ec59d9bda5
Fix lexer not producing right token on "_"
2019-03-22 08:09:11 +09:00
pcpthm
9623e77d9f
Fix reparsing bug when lex result is different
2019-03-22 08:09:11 +09:00
pcpthm
c622000413
Improve reparse fuzz test
2019-03-22 08:09:11 +09:00
pcpthm
0acb61a911
Fix an arithmetic overflow in reparser
2019-03-22 08:09:11 +09:00
pcpthm
4c7142d0c9
Add fuzz test for reparsing
2019-03-22 08:04:48 +09:00
pcpthm
e734190c24
Refactor parser fuzz testing
2019-03-22 08:04:48 +09:00
Aleksey Kladov
182c05a96c
add name resolution from the old impl
...
unlike the old impl, this also handles macro imports across crates
2019-03-17 12:46:13 +03:00
Caio
ad72699553
Add async keyword
2019-03-09 20:40:22 -03:00
Ville Penttinen
d3ce69aee3
Remove TypeRef
from item opts which implement TypeAscriptionOwner
2019-02-27 14:08:09 +02:00
Ville Penttinen
6eb070d661
Add new trait TypeAscriptionOwner
...
This trait should be implemented for nodes which have an ascribed type,
e.g. thing : Type. Such as let, const, static, param, named struct fields.
2019-02-26 11:35:57 +02:00
Aleksey Kladov
78f10fcdc4
rename type to type_alias in the AST as well
2019-02-25 13:49:32 +03:00
Aleksey Kladov
65a2be4953
complete struct literals
2019-02-24 17:01:56 +03:00
Aleksey Kladov
666303faf3
support upcastig in AST enum
2019-02-24 16:57:05 +03:00
Aleksey Kladov
f078f7adc8
introduce tree builder
2019-02-23 16:55:01 +03:00
Aleksey Kladov
0c1cb98182
rename
2019-02-23 16:07:29 +03:00
bors[bot]
5100aeac42
Merge #876
...
876: Fix join_lines not adding a comma after join_single_expr_block with match arm r=matklad a=vipentti
Fixes #868
Co-authored-by: Ville Penttinen <villem.penttinen@gmail.com>
2019-02-21 16:55:26 +00:00
Ville Penttinen
82173c8de4
Move non_trivia_sibling
to ra_syntax::algo
2019-02-21 18:49:03 +02:00
Aleksey Kladov
4fe07a2b61
add API guide to ra_syntax
2019-02-21 17:35:45 +03:00
Aleksey Kladov
7060a39d5c
simplify trait bounds
2019-02-21 16:12:15 +03:00
Aleksey Kladov
b51b71bf25
rearrange methods
2019-02-21 16:04:03 +03:00
Aleksey Kladov
f7f99af0a6
kill utils module
2019-02-21 15:57:40 +03:00
Aleksey Kladov
412ac63ff5
docs
2019-02-21 15:24:42 +03:00
Aleksey Kladov
c47f9e2d37
fix compilation
2019-02-21 13:37:32 +03:00
Aleksey Kladov
d334b5a1db
move parser to a separate crate
2019-02-21 13:27:45 +03:00
Aleksey Kladov
cd0d2866fc
make grammar independent of syntax tree
2019-02-21 12:12:04 +03:00
Aleksey Kladov
1b2e70df99
minor
2019-02-21 12:05:52 +03:00
Aleksey Kladov
79ce0fa8d7
move whitespace handling to tree builder
2019-02-21 12:03:42 +03:00
Aleksey Kladov
882c47f187
move syntax error to parser
2019-02-20 23:17:07 +03:00
Aleksey Kladov
61992dc1cd
simplify
2019-02-20 23:05:59 +03:00
Aleksey Kladov
4c1f9b8d4e
remove TokenPos
2019-02-20 23:02:24 +03:00
Aleksey Kladov
cce23fddba
flattern module structure
2019-02-20 22:52:32 +03:00
Aleksey Kladov
2acb21e8f7
merge parse_impl and parser_api
2019-02-20 22:44:06 +03:00
Aleksey Kladov
e72ad0a2fa
fix off by one error
2019-02-20 22:27:49 +03:00
Aleksey Kladov
2b5e336ce7
move abstract traits to top
2019-02-20 22:19:12 +03:00
Aleksey Kladov
d2bce118ae
switch to dynamic dispatch for TokenSource
...
Benchmarks show no difference. This is probably because we are
bottlenecked on memory allocations, and we should fix that, but we are
not optimizing for performance just yet.
changes. Lines starting # with '#' will be ignored, and an empty
message aborts the commit. # # On branch token-source # Changes to be
committed: # modified: crates/ra_syntax/src/parsing/parser_api.rs #
modified: crates/ra_syntax/src/parsing/parser_impl.rs #
2019-02-20 22:02:03 +03:00
Aleksey Kladov
0c81b9deee
route parsing via TokenSource trait
2019-02-20 21:50:07 +03:00
Aleksey Kladov
3517c175ac
rename Sink -> TreeSink
2019-02-20 21:08:59 +03:00
Aleksey Kladov
86a67dce25
fix tests
2019-02-20 16:48:06 +03:00
Aleksey Kladov
45fc91cc47
rearrange modules in a suggestd reading order
2019-02-20 16:24:39 +03:00
Aleksey Kladov
a4a1e08ab8
flatten modules
2019-02-20 16:16:14 +03:00
Aleksey Kladov
9f6883fbf1
move reparsers to grammar
2019-02-20 16:02:06 +03:00
Aleksey Kladov
5a6eda528c
tighten visibility
2019-02-20 15:57:26 +03:00
Aleksey Kladov
5222b8aba3
move all parsing related bits to a separate module
2019-02-20 15:47:32 +03:00
Aleksey Kladov
9d0cda4bc8
slightly better name
2019-02-20 15:03:31 +03:00
Aleksey Kladov
df6efe62c5
make stuff private
2019-02-20 14:53:19 +03:00
Aleksey Kladov
4e8a3f565b
handle != operator
2019-02-18 10:09:44 +03:00
Ville Penttinen
58d14bcaf7
Enable parsing attributes for generic lifetimes and type parameters
2019-02-17 23:32:10 +02:00
Ville Penttinen
bb25958705
Remove match_armlist validator
2019-02-17 20:32:10 +02:00
Ville Penttinen
96e3ac389f
Parse only outer_attributes for match arms for now
2019-02-17 19:48:08 +02:00
Ville Penttinen
1c97c1ac11
Enable parsing of attributes inside a match block
...
We allow invalid inner attributes to be parsed, e.g. inner attributes that are
not directly after the opening brace of the match block.
Instead we run validation on `MatchArmList` to allow better reporting of errors.
2019-02-17 19:26:57 +02:00
Florian Diebold
a1bda3fc08
Handle generic args for method calls
2019-02-16 23:06:41 +01:00
Florian Diebold
da7056245d
Add generic params to impl blocks
2019-02-16 23:06:41 +01:00
Florian Diebold
1526eb25c9
Import the prelude
2019-02-13 20:10:09 +01:00
Aleksey Kladov
4e91c23c79
rename yellow -> syntax_node
...
why yellow in the first place? Its red + green.
2019-02-12 19:02:30 +03:00
Aleksey Kladov
2efdf41bdb
make macro a NameOwner
2019-02-11 19:24:13 +03:00
Florian Diebold
f1afc93353
Fix handling of literal patterns
...
Wrap them in a LiteralPat node so they can be distinguished from literal
expressions.
2019-02-09 21:37:30 +01:00
Aleksey Kladov
12e3b4c70b
reformat the world
2019-02-08 14:49:43 +03:00