diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2019-09-07 16:47:56 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2019-09-07 16:47:56 +0100 |
commit | 4a89a7c9026dc3df4466f7b10c666186830d38f6 (patch) | |
tree | fdf832ba772141368f27d733cd718ee9a599a346 /crates/ra_syntax | |
parent | a73b424e3bcf3e211f87d5a9b175a89231848c6d (diff) | |
parent | 8fb3cab76c60fbff5ae6f5984ac07b09b42b742c (diff) |
Merge #1786
1786: Various minor trait improvements r=matklad a=flodiebold
- lower bounds on trait definition, i.e. super traits
- use super traits for associated types
- use traits from where clauses and their super traits for method resolution
- lower fn-like paths (i.e. `Fn(X, Y) -> Z`)
- pass the environment to Chalk in the correct way to make elaboration work, i.e. inferring things like `T: Clone` from `T: Copy`. The clauses need to be wrapped in `FromEnv` clauses for that to work, which I didn't do before.
- add some tests for closure inference already
Co-authored-by: Florian Diebold <[email protected]>
Diffstat (limited to 'crates/ra_syntax')
-rw-r--r-- | crates/ra_syntax/src/ast/generated.rs | 6 | ||||
-rw-r--r-- | crates/ra_syntax/src/grammar.ron | 2 |
2 files changed, 7 insertions, 1 deletions
diff --git a/crates/ra_syntax/src/ast/generated.rs b/crates/ra_syntax/src/ast/generated.rs index bcf753f78..d274b6fbc 100644 --- a/crates/ra_syntax/src/ast/generated.rs +++ b/crates/ra_syntax/src/ast/generated.rs | |||
@@ -2312,6 +2312,12 @@ impl PathSegment { | |||
2312 | pub fn type_arg_list(&self) -> Option<TypeArgList> { | 2312 | pub fn type_arg_list(&self) -> Option<TypeArgList> { |
2313 | AstChildren::new(&self.syntax).next() | 2313 | AstChildren::new(&self.syntax).next() |
2314 | } | 2314 | } |
2315 | pub fn param_list(&self) -> Option<ParamList> { | ||
2316 | AstChildren::new(&self.syntax).next() | ||
2317 | } | ||
2318 | pub fn ret_type(&self) -> Option<RetType> { | ||
2319 | AstChildren::new(&self.syntax).next() | ||
2320 | } | ||
2315 | } | 2321 | } |
2316 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] | 2322 | #[derive(Debug, Clone, PartialEq, Eq, Hash)] |
2317 | pub struct PathType { | 2323 | pub struct PathType { |
diff --git a/crates/ra_syntax/src/grammar.ron b/crates/ra_syntax/src/grammar.ron index 3e6c2d3f3..993e58e64 100644 --- a/crates/ra_syntax/src/grammar.ron +++ b/crates/ra_syntax/src/grammar.ron | |||
@@ -684,7 +684,7 @@ Grammar( | |||
684 | ] | 684 | ] |
685 | ), | 685 | ), |
686 | "PathSegment": ( | 686 | "PathSegment": ( |
687 | options: [ "NameRef", "TypeArgList" ] | 687 | options: [ "NameRef", "TypeArgList", "ParamList", "RetType" ] |
688 | ), | 688 | ), |
689 | "TypeArgList": (collections: [ | 689 | "TypeArgList": (collections: [ |
690 | ("type_args", "TypeArg"), | 690 | ("type_args", "TypeArg"), |