aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_syntax
diff options
context:
space:
mode:
authorbors[bot] <bors[bot]@users.noreply.github.com>2019-02-17 13:56:22 +0000
committerbors[bot] <bors[bot]@users.noreply.github.com>2019-02-17 13:56:22 +0000
commitf937d11ad892036fa93b25a2c19d10dcebe4ab24 (patch)
tree71f3719509f3fb46f5d2ce5a93da42ea67b23b70 /crates/ra_syntax
parentedd4c1d8a6c270fe39ae881c23c722c658c87c32 (diff)
parent3c7c7e5a04306f8b68dffef2b5ca84628ed81ce2 (diff)
Merge #843
843: Impl generics r=matklad a=flodiebold This handles type parameters on impls when typing method calls. ~One remaining problem is that the autoderefs aren't applied during the unification of the method receiver type with the actual receiver type, which means that the type parameters are only correctly inferred if no autoderefs happened.~ Co-authored-by: Florian Diebold <[email protected]>
Diffstat (limited to 'crates/ra_syntax')
-rw-r--r--crates/ra_syntax/src/ast/generated.rs5
-rw-r--r--crates/ra_syntax/src/grammar.ron4
2 files changed, 7 insertions, 2 deletions
diff --git a/crates/ra_syntax/src/ast/generated.rs b/crates/ra_syntax/src/ast/generated.rs
index 7c5e8ce5e..dd91b5063 100644
--- a/crates/ra_syntax/src/ast/generated.rs
+++ b/crates/ra_syntax/src/ast/generated.rs
@@ -1352,6 +1352,7 @@ impl ToOwned for ImplBlock {
1352} 1352}
1353 1353
1354 1354
1355impl ast::TypeParamsOwner for ImplBlock {}
1355impl ImplBlock { 1356impl ImplBlock {
1356 pub fn item_list(&self) -> Option<&ItemList> { 1357 pub fn item_list(&self) -> Option<&ItemList> {
1357 super::child_opt(self) 1358 super::child_opt(self)
@@ -2094,6 +2095,10 @@ impl MethodCallExpr {
2094 pub fn name_ref(&self) -> Option<&NameRef> { 2095 pub fn name_ref(&self) -> Option<&NameRef> {
2095 super::child_opt(self) 2096 super::child_opt(self)
2096 } 2097 }
2098
2099 pub fn type_arg_list(&self) -> Option<&TypeArgList> {
2100 super::child_opt(self)
2101 }
2097} 2102}
2098 2103
2099// Module 2104// Module
diff --git a/crates/ra_syntax/src/grammar.ron b/crates/ra_syntax/src/grammar.ron
index 304bc5909..27a123681 100644
--- a/crates/ra_syntax/src/grammar.ron
+++ b/crates/ra_syntax/src/grammar.ron
@@ -322,7 +322,7 @@ Grammar(
322 ], 322 ],
323 options: ["TypeRef"] 323 options: ["TypeRef"]
324 ), 324 ),
325 "ImplBlock": (options: ["ItemList"]), 325 "ImplBlock": (options: ["ItemList"], traits: ["TypeParamsOwner"]),
326 326
327 "ParenType": (options: ["TypeRef"]), 327 "ParenType": (options: ["TypeRef"]),
328 "TupleType": ( collections: [["fields", "TypeRef"]] ), 328 "TupleType": ( collections: [["fields", "TypeRef"]] ),
@@ -431,7 +431,7 @@ Grammar(
431 ), 431 ),
432 "MethodCallExpr": ( 432 "MethodCallExpr": (
433 traits: ["ArgListOwner"], 433 traits: ["ArgListOwner"],
434 options: [ "Expr", "NameRef" ], 434 options: [ "Expr", "NameRef", "TypeArgList" ],
435 ), 435 ),
436 "IndexExpr": (), 436 "IndexExpr": (),
437 "FieldExpr": (options: ["Expr", "NameRef"]), 437 "FieldExpr": (options: ["Expr", "NameRef"]),