aboutsummaryrefslogtreecommitdiff
path: root/crates
Commit message (Collapse)AuthorAgeFilesLines
...
* | | Merge #1184bors[bot]2019-04-2212-196/+567
|\ \ \ | |/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1184: Start structured editing API r=matklad a=matklad I think I finally understand how to provide nice, mutable structured editing API on top of red-green trees. The problem I am trying to solve is that any modification to a particular `SyntaxNode` returns an independent new file. So, if you are editing a struct literal, and add a field, you get back a SourceFile, and you have to find the struct literal inside it yourself! This happens because our trees are immutable, but have parent pointers. The main idea here is to introduce `AstEditor<T>` type, which abstracts away that API. So, you create an `AstEditor` for node you want to edit and call various `&mut` taking methods on it. Internally, `AstEditor` stores both the original node and the current node. All edits are applied to the current node, which is replaced by the corresponding node in the new file. In the end, `AstEditor` computes a text edit between old and new nodes. Note that this also should sole a problem when you create an anchor pointing to a subnode and mutate the parent node, invalidating anchor. Because mutation needs `&mut`, all anchors must be killed before modification. Co-authored-by: Aleksey Kladov <[email protected]>
| * | drop useless testAleksey Kladov2019-04-221-28/+0
| | |
| * | move add_missing_members to structured editing APIAleksey Kladov2019-04-224-146/+231
| | | | | | | | | | | | | | | Currently, this is more code, and we also loose auto-indenting of bodies, but, long-term, this is the right approach
| * | fix postfix match indentAleksey Kladov2019-04-222-4/+4
| | |
| * | more type safetyAleksey Kladov2019-04-223-4/+29
| | |
| * | test short structsAleksey Kladov2019-04-213-4/+39
| | |
| * | use structured editing API for fill struct assistAleksey Kladov2019-04-213-119/+138
| | |
| * | start structured editing APIAleksey Kladov2019-04-216-3/+238
| | |
* | | Use map, sum in Subtree::coount instead of foldEdwin Cheng2019-04-221-4/+8
| | |
* | | Change macro stack monitor test to func ptr basedEdwin Cheng2019-04-221-40/+25
| | |
* | | Add mbe expand limit and poision macro setEdwin Cheng2019-04-225-18/+216
| |/ |/|
* | Add testsEdwin Cheng2019-04-211-2/+87
| |
* | Fix offset bug in SourceWalkerEdwin Cheng2019-04-211-6/+7
| |
* | Handle `*+` case and single token caseEdwin Cheng2019-04-211-5/+56
| |
* | fix mbe_parser rhs colon parsingEdwin Cheng2019-04-211-10/+11
| |
* | Add more information on parse_macro failEdwin Cheng2019-04-211-10/+27
| |
* | Fix lifetime in tt to syntax node conversionEdwin Cheng2019-04-211-1/+6
|/
* Add HIR for where clauses & ignore impls with where clauses in trait resolutionFlorian Diebold2019-04-213-5/+63
| | | | | This prevents any `impl<T> Trait for T where ...` from being treated as a blanket impl while we don't handle where clauses yet.
* :arrow_up: lspAleksey Kladov2019-04-211-1/+1
|
* Merge #1175bors[bot]2019-04-215-50/+154
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | 1175: Fix bugs and add error log about macro expansion r=matklad a=edwin0cheng This PR fixed / add following things: * Add a fused count which stop recursion of macro expansion in name resolution. * Add some logs when macro expansion fails * Add `$crate` meta variable support in mbe, which create a `$crate` ident token in token tree. * Fixed matching a `$REPEAT` pattern inside a subtree, e.g. `(fn $name:ident {$($i:ident)*} ) => {...}` * Remove composite-able punct token in syntax node to token conversion. Co-authored-by: Edwin Cheng <[email protected]>
| * Fix bugsEdwin Cheng2019-04-205-50/+154
| |
* | switch to official extend selection APIAleksey Kladov2019-04-216-4/+73
| |
* | Add a simple test for str method completionFlorian Diebold2019-04-201-0/+22
| |
* | Merge #1154bors[bot]2019-04-2011-19/+174
|\ \ | |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | 1154: Initial support for lang items (and str completion) r=flodiebold a=marcogroppo This PR adds partial support for lang items. For now, the only supported lang items are the ones that target an impl block. Lang items are now resolved during type inference - this means that `str` completion now works. Fixes #1139. (thanks Florian Diebold for the help!) Co-authored-by: Marco Groppo <[email protected]>
| * lang_item_lookup is now a salsa query.Marco Groppo2019-04-193-32/+34
| |
| * New krate() method in Resolver.Marco Groppo2019-04-195-56/+46
| | | | | | | | Renamed Impl to ImplBlock.
| * Initial support for lang items.Marco Groppo2019-04-1911-41/+204
| |
* | Disable test_tt_xxEdwin Cheng2019-04-191-23/+23
| |
* | Disable tt matcherEdwin Cheng2019-04-191-4/+8
| |
* | Add back missing assertEdwin Cheng2019-04-191-2/+3
| |
* | Fix bug for ident to lifetimeEdwin Cheng2019-04-191-0/+7
| |
* | Add vis matcherEdwin Cheng2019-04-196-1/+33
| |
* | Add literal matcherEdwin Cheng2019-04-193-0/+35
| |
* | Add lifetime matcherEdwin Cheng2019-04-194-2/+25
| |
* | add tt matcherEdwin Cheng2019-04-192-0/+28
| |
* | add block matcherEdwin Cheng2019-04-196-0/+64
| |
* | Add block matcherEdwin Cheng2019-04-196-0/+35
| |
* | Merge #1148bors[bot]2019-04-198-20/+295
|\ \ | |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1148: Add token_tree_to_xxx functions r=matklad a=edwin0cheng <del>As discus in PR #1147 , this PR added a `mbe::MacroKind` . Currently only 2 kind of macro are supported, `SourceFile` and `Block`.</del> Added following functions for `tt::TokenTree` and `ast::Node` conversion: * token_tree_to_expr * token_tree_to_pat * token_tree_to_ty * token_tree_to_macro_stmts * token_tree_to_macro_items And added two new syntax kind: * MACRO_ITEMS * MACRO_STMTS Co-authored-by: Edwin Cheng <[email protected]>
| * Return Result for token_tree_to_xx functionsEdwin Cheng2019-04-182-14/+24
| |
| * Add expr, pat, ty and macro_stmtsEdwin Cheng2019-04-185-15/+156
| |
| * Add MacroItems and MacroStmts in grammer.ronEdwin Cheng2019-04-187-8/+132
| |
* | Fix missing last token in mbe $repeat parsingEdwin Cheng2019-04-182-1/+24
|/
* Add `item` matcher in mbeEdwin Cheng2019-04-186-0/+70
|
* Merge #1160bors[bot]2019-04-171-8/+23
|\ | | | | | | | | | | | | | | 1160: better formatting when adding trait members r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * better formatting when adding trait membersAleksey Kladov2019-04-171-8/+23
| | | | | | | | | | | | * it's conventional not to use one-liners * new placement is more predictable, b/c it does not depend on header's length
* | Merge #1145bors[bot]2019-04-172-8/+117
|\ \ | |/ |/| | | | | | | | | | | | | | | | | | | | | | | 1145: Fix #1099, plug self type type parameters in infer_path_expr r=flodiebold a=edwin0cheng As discussed in #1099, this PR try to "plug" a `self type` type parameters in `infer_path_expr`. All the cases in 1099 was fixed and tested. And luckily, this PR fixed bug #1030 again and make the test output correct. Co-authored-by: Edwin Cheng <[email protected]>
| * RefactoringEdwin Cheng2019-04-171-51/+46
| |
| * Simpliy codeEdwin Cheng2019-04-171-60/+32
| |
| * Bug fix and add more commentsEdwin Cheng2019-04-171-22/+60
| |
| * Fix 1099Edwin Cheng2019-04-172-5/+109
| |