aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Add `...` parsing for fn pointer typeEdwin Cheng2019-04-234-3/+47
|
* Merge #1195bors[bot]2019-04-221-4/+20
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1195: Add cached for SubtreeSource r=matklad a=edwin0cheng I just did some simple profiling, the most slowest part of the mbe related code is the tree traversal, so i add a very simple cache in here is the result: ``` target\release\ra_cli analysis-stats``` *Before ``` Database loaded, 21 roots, 1.2731481s Crates in this dir: 26 Total modules found: 282 Total declarations: 4783 Total functions: 3126 Total expressions: 59452 Expressions of unknown type: 8999 (15%) Expressions of partially unknown type: 2672 (4%) Analysis: 17.9596334s ``` ``` *After Database loaded, 21 roots, 1.7425901s Crates in this dir: 26 Total modules found: 282 Total declarations: 4783 Total functions: 3126 Total expressions: 59452 Expressions of unknown type: 8999 (15%) Expressions of partially unknown type: 2672 (4%) Analysis: 13.4007118s ``` Save 4 seconds :) Co-authored-by: Edwin Cheng <[email protected]>
| * Add cached for SubtreeSourceEdwin Cheng2019-04-221-4/+20
|/
* Merge #1194bors[bot]2019-04-227-77/+271
|\ | | | | | | | | | | | | | | | | 1194: Pr 1190 r=matklad a=matklad Co-authored-by: Andrea Pretto <[email protected]> Co-authored-by: Aleksey Kladov <[email protected]>
| * unused importAleksey Kladov2019-04-221-2/+0
| |
| * remove path_ident from CompletionContextAleksey Kladov2019-04-222-39/+38
| | | | | | | | | | | | | | | | | | We really shouldn't be looking at the identifier at point. Instead, all filtering and sorting should be implemented at the layer above. This layer should probably be home for auto-import completions as well, but, since that is not yet implemented, let's just stick this into complete_scope.
| * move auto-imoprter into IDEAleksey Kladov2019-04-227-92/+68
| | | | | | | | | | auto-import is purely an IDE concern, so it should be done outside of HIR
| * complete_import: prevent panic when the anchor is the completion source rangeAndrea Pretto2019-04-213-16/+18
| | | | | | | | | | | | (fix rebase mess) Please enter the commit message for your changes. Lines starting
| * complete_import: add new import resolver infrastructure with some hardcoded ↵Andrea Pretto2019-04-216-11/+155
| | | | | | | | | | | | importable name. Changes complete_scope to support that.
| * auto_import: better no anchor managementAndrea Pretto2019-04-211-7/+48
| |
| * auto_import: make auto import working with target as a list of SmolStr ↵Andrea Pretto2019-04-212-63/+69
| | | | | | | | instead of ast::Path
| * auto_import: use TextEditBuilder instead of AssistBuilder to make it more ↵Andrea Pretto2019-04-212-8/+36
| | | | | | | | reusable
* | Merge #1193bors[bot]2019-04-221-3/+98
|\ \ | | | | | | | | | | | | | | | | | | | | | 1193: Add a test for #1178 case r=edwin0cheng a=edwin0cheng A little PR to add a test case for #1178 Co-authored-by: Edwin Cheng <[email protected]>
| * | Remove unused print outEdwin Cheng2019-04-221-67/+63
| | |
| * | Add a test for #1178 caseEdwin Cheng2019-04-221-3/+102
| | |
* | | Merge #1184bors[bot]2019-04-2213-196/+569
|\ \ \ | |/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-217-3/+240
| | |
* | | Merge #1192bors[bot]2019-04-225-15/+202
|\ \ \ | |_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1192: Add mbe expand limit and poision macro set r=maklad a=edwin0cheng As discussed in Zulip, this PR add a token expansion limit in `parse_macro` and a "poison" macro set in `CrateDefMap` to prevent stack over flow and limit a mbe macro size. Note: Right now it only handle a poison macro in a single crate, such that if other crate try to call that macro, the whole process will do again until it became poisoned in that crate. Co-authored-by: Edwin Cheng <[email protected]>
| * | 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
|/ /
* | Merge #1189bors[bot]2019-04-215-34/+194
|\ \ | |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1189: Fix #1178 r=matklad a=edwin0cheng This PR improves / fixes mbe : 1. Fixed a offest bug in `SourceTreeWalker` 2. Handle `*+` matcher properly 3. Add missing separator in rhs macro expansion. 4. Fixed bug in single token with empty delimiter subtree case. It is because the current `mbe_expander` will create an delimiter subtree for each expansion. But in `tt` case, all puncts expansion will be incorrect because of it. 5. Fixed lifetime bug 6. Add more information on parse_macro fail 7. Add tests for above. Co-authored-by: Edwin Cheng <[email protected]>
| * 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
|/
* Merge #1186bors[bot]2019-04-211-1/+0
|\ | | | | | | | | | | | | | | 1186: remove appveyor r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * remove appveyorAleksey Kladov2019-04-211-1/+0
|/
* Merge #1182bors[bot]2019-04-213-5/+63
|\ | | | | | | | | | | | | | | | | | | 1182: Add HIR for where clauses & ignore impls with where clauses in trait resolution r=matklad a=flodiebold This prevents any `impl<T> Trait for T where ...` from being treated as a blanket impl while we don't handle where clauses yet. Co-authored-by: Florian Diebold <[email protected]>
| * 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.
* Merge #1181bors[bot]2019-04-213-7/+6
|\ | | | | | | | | | | | | | | 1181: :arrow_up: lsp r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * :arrow_up: lspAleksey Kladov2019-04-213-7/+6
|/
* 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
| |
* | fix docsAleksey Kladov2019-04-212-7/+8
| |
* | Merge #1179bors[bot]2019-04-2113-63/+89
|\ \ | | | | | | | | | | | | | | | | | | | | | 1179: switch to official extend selection API r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * | switch to official extend selection APIAleksey Kladov2019-04-2113-63/+89
|/ /
* | Merge #1177bors[bot]2019-04-212-1442/+185
|\ \ | | | | | | | | | | | | | | | | | | | | | 1177: :arrow_up: code r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * | :arrow_up: codeAleksey Kladov2019-04-212-1442/+185
|/ /
* | Merge #1176bors[bot]2019-04-201-0/+22
|\ \ | | | | | | | | | | | | | | | | | | | | | 1176: Add a simple test for str method completion r=flodiebold a=flodiebold Somehow I forgot that we should add a test for this in #1154 until after it was already merging. So I'll just add one now :) Co-authored-by: Florian Diebold <[email protected]>
| * | 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]>