implement the ? operator

The `?` postfix operator is sugar equivalent to the try! macro, but is more amenable to chaining:
`File::open("foo")?.metadata()?.is_dir()`.

`?` is accepted on any *expression* that can return a `Result`, e.g. `x()?`, `y!()?`, `{z}?`,
`(w)?`, etc. And binds more tightly than unary operators, e.g. `!x?` is parsed as `!(x?)`.

cc #31436
This commit is contained in:
Jorge Aparicio
2016-02-28 17:38:48 -05:00
parent c116ae35cf
commit 210dd611aa
12 changed files with 355 additions and 2 deletions

View File

@@ -1022,6 +1022,9 @@ pub enum ExprKind {
/// No-op: used solely so we can pretty-print faithfully
Paren(P<Expr>),
/// `expr?`
Try(P<Expr>),
}
/// The explicit Self type in a "qualified path". The actual