diff options
| author | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2018-01-18 20:59:28 +0300 |
|---|---|---|
| committer | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2018-01-27 22:37:30 +0300 |
| commit | 95d27c3b7905b437f21deddbe946f93caaa4c51f (patch) | |
| tree | 1e38c20ea7c2a5689995f4c60cef2e254060ede1 /src/libsyntax/parse/parser.rs | |
| parent | 873b77531cdfefa38024f84532ca0083e8f17e3a (diff) | |
| download | rust-95d27c3b7905b437f21deddbe946f93caaa4c51f.tar.gz rust-95d27c3b7905b437f21deddbe946f93caaa4c51f.zip | |
syntax: Permit `+` in return types of function declarations
`+` is still disallowed in function types and function-like traits
Diffstat (limited to 'src/libsyntax/parse/parser.rs')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 8fffe0a8697..0430be101b0 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -1362,7 +1362,7 @@ impl<'a> Parser<'a> { self.expect_keyword(keywords::Fn)?; let (inputs, variadic) = self.parse_fn_args(false, true)?; - let ret_ty = self.parse_ret_ty()?; + let ret_ty = self.parse_ret_ty(false)?; let decl = P(FnDecl { inputs, output: ret_ty, @@ -1501,9 +1501,9 @@ impl<'a> Parser<'a> { } /// Parse optional return type [ -> TY ] in function decl - pub fn parse_ret_ty(&mut self) -> PResult<'a, FunctionRetTy> { + fn parse_ret_ty(&mut self, allow_plus: bool) -> PResult<'a, FunctionRetTy> { if self.eat(&token::RArrow) { - Ok(FunctionRetTy::Ty(self.parse_ty_no_plus()?)) + Ok(FunctionRetTy::Ty(self.parse_ty_common(allow_plus, true)?)) } else { Ok(FunctionRetTy::Default(self.span.with_hi(self.span.lo()))) } @@ -4893,7 +4893,7 @@ impl<'a> Parser<'a> { pub fn parse_fn_decl(&mut self, allow_variadic: bool) -> PResult<'a, P<FnDecl>> { let (args, variadic) = self.parse_fn_args(true, allow_variadic)?; - let ret_ty = self.parse_ret_ty()?; + let ret_ty = self.parse_ret_ty(true)?; Ok(P(FnDecl { inputs: args, @@ -5034,7 +5034,7 @@ impl<'a> Parser<'a> { self.expect(&token::CloseDelim(token::Paren))?; Ok(P(FnDecl { inputs: fn_inputs, - output: self.parse_ret_ty()?, + output: self.parse_ret_ty(true)?, variadic: false })) } @@ -5056,7 +5056,7 @@ impl<'a> Parser<'a> { args } }; - let output = self.parse_ret_ty()?; + let output = self.parse_ret_ty(true)?; Ok(P(FnDecl { inputs: inputs_captures, |
