diff options
| author | bors <bors@rust-lang.org> | 2014-08-14 03:46:22 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2014-08-14 03:46:22 +0000 |
| commit | 9d45d63d0d18f21f74c8a2a4e5367a785932f64e (patch) | |
| tree | b87ab6a2dd1256c5068314d0773dcf485c58a624 /src/libsyntax/print | |
| parent | aa98b25c4f0c10729dff37c699904ad57b8fbda8 (diff) | |
| parent | a63003fe1aac487d3c0c527c4c984375c998de99 (diff) | |
| download | rust-9d45d63d0d18f21f74c8a2a4e5367a785932f64e.tar.gz rust-9d45d63d0d18f21f74c8a2a4e5367a785932f64e.zip | |
auto merge of #15929 : pcwalton/rust/by-ref-closures, r=alexcrichton
by-reference upvars. This partially implements RFC 38. A snapshot will be needed to turn this on, because stage0 cannot yet parse the keyword. Part of #12831. r? @alexcrichton
Diffstat (limited to 'src/libsyntax/print')
| -rw-r--r-- | src/libsyntax/print/pprust.rs | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/libsyntax/print/pprust.rs b/src/libsyntax/print/pprust.rs index 9c1b97f94a8..ed285e2aa44 100644 --- a/src/libsyntax/print/pprust.rs +++ b/src/libsyntax/print/pprust.rs @@ -1473,7 +1473,9 @@ impl<'a> State<'a> { } try!(self.bclose_(expr.span, indent_unit)); } - ast::ExprFnBlock(ref decl, ref body) => { + ast::ExprFnBlock(capture_clause, ref decl, ref body) => { + try!(self.print_capture_clause(capture_clause)); + // in do/for blocks we don't want to show an empty // argument list, but at this point we don't know which // we are inside. @@ -1503,7 +1505,9 @@ impl<'a> State<'a> { // empty box to satisfy the close. try!(self.ibox(0)); } - ast::ExprUnboxedFn(ref decl, ref body) => { + ast::ExprUnboxedFn(capture_clause, ref decl, ref body) => { + try!(self.print_capture_clause(capture_clause)); + // in do/for blocks we don't want to show an empty // argument list, but at this point we don't know which // we are inside. @@ -2071,6 +2075,14 @@ impl<'a> State<'a> { self.maybe_print_comment(decl.output.span.lo) } + pub fn print_capture_clause(&mut self, capture_clause: ast::CaptureClause) + -> IoResult<()> { + match capture_clause { + ast::CaptureByValue => Ok(()), + ast::CaptureByRef => self.word_space("ref"), + } + } + pub fn print_proc_args(&mut self, decl: &ast::FnDecl) -> IoResult<()> { try!(word(&mut self.s, "proc")); try!(word(&mut self.s, "(")); |
