rollup merge of #19215: aochagavia/pretty
Closes https://github.com/rust-lang/rust/issues/19077 I would appreciate any guidance on how to write a test for this. I saw some examples in `test/pretty`, but there are different ways to test... With or without `.pp` files, with a `pp-exact` comment, etc.
This commit is contained in:
commit
4dbd6574b0
@ -11,31 +11,25 @@
|
||||
pub use self::AnnNode::*;
|
||||
|
||||
use abi;
|
||||
use ast::{FnUnboxedClosureKind, FnMutUnboxedClosureKind};
|
||||
use ast::{mod, FnUnboxedClosureKind, FnMutUnboxedClosureKind};
|
||||
use ast::{FnOnceUnboxedClosureKind};
|
||||
use ast::{MethodImplItem, RegionTyParamBound, TraitTyParamBound};
|
||||
use ast::{RequiredMethod, ProvidedMethod, TypeImplItem, TypeTraitItem};
|
||||
use ast::{UnboxedClosureKind};
|
||||
use ast;
|
||||
use ast_util;
|
||||
use owned_slice::OwnedSlice;
|
||||
use attr::{AttrMetaMethods, AttributeMethods};
|
||||
use codemap::{CodeMap, BytePos};
|
||||
use codemap;
|
||||
use codemap::{mod, CodeMap, BytePos};
|
||||
use diagnostic;
|
||||
use parse::token::{BinOpToken, Token};
|
||||
use parse::token;
|
||||
use parse::token::{mod, BinOpToken, Token};
|
||||
use parse::lexer::comments;
|
||||
use parse;
|
||||
use print::pp::{break_offset, word, space, zerobreak, hardbreak};
|
||||
use print::pp::{mod, break_offset, word, space, zerobreak, hardbreak};
|
||||
use print::pp::{Breaks, Consistent, Inconsistent, eof};
|
||||
use print::pp;
|
||||
use ptr::P;
|
||||
|
||||
use std::ascii;
|
||||
use std::io::IoResult;
|
||||
use std::io;
|
||||
use std::mem;
|
||||
use std::{ascii, mem};
|
||||
use std::io::{mod, IoResult};
|
||||
|
||||
pub enum AnnNode<'a> {
|
||||
NodeIdent(&'a ast::Ident),
|
||||
@ -2150,21 +2144,22 @@ impl<'a> State<'a> {
|
||||
try!(self.print_pat(&**p));
|
||||
}
|
||||
try!(space(&mut self.s));
|
||||
match arm.guard {
|
||||
Some(ref e) => {
|
||||
try!(self.word_space("if"));
|
||||
try!(self.print_expr(&**e));
|
||||
try!(space(&mut self.s));
|
||||
}
|
||||
None => ()
|
||||
if let Some(ref e) = arm.guard {
|
||||
try!(self.word_space("if"));
|
||||
try!(self.print_expr(&**e));
|
||||
try!(space(&mut self.s));
|
||||
}
|
||||
try!(self.word_space("=>"));
|
||||
|
||||
match arm.body.node {
|
||||
ast::ExprBlock(ref blk) => {
|
||||
// the block will close the pattern's ibox
|
||||
try!(self.print_block_unclosed_indent(&**blk,
|
||||
indent_unit));
|
||||
try!(self.print_block_unclosed_indent(&**blk, indent_unit));
|
||||
|
||||
// If it is a user-provided unsafe block, print a comma after it
|
||||
if let ast::UnsafeBlock(ast::UserProvided) = blk.rules {
|
||||
try!(word(&mut self.s, ","));
|
||||
}
|
||||
}
|
||||
_ => {
|
||||
try!(self.end()); // close the ibox for the pattern
|
||||
|
20
src/test/pretty/issue-19077.rs
Normal file
20
src/test/pretty/issue-19077.rs
Normal file
@ -0,0 +1,20 @@
|
||||
// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
//
|
||||
// Testing that unsafe blocks in match arms are followed by a comma
|
||||
// pp-exact
|
||||
fn main() {
|
||||
match true {
|
||||
true if true => (),
|
||||
false => unsafe { },
|
||||
true => { }
|
||||
false => (),
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user