From e8bff43a9fe893d92bd4abd83dfb4abe73fb4972 Mon Sep 17 00:00:00 2001 From: Caleb Cartwright Date: Thu, 19 Mar 2020 22:13:34 -0500 Subject: [PATCH] fix: formatting arbitrary extern abi --- Cargo.lock | 3 +-- Cargo.toml | 6 +----- src/utils.rs | 15 ++++++--------- tests/source/issue_4086.rs | 2 ++ tests/target/issue_4086.rs | 2 ++ 5 files changed, 12 insertions(+), 16 deletions(-) create mode 100644 tests/source/issue_4086.rs create mode 100644 tests/target/issue_4086.rs diff --git a/Cargo.lock b/Cargo.lock index d8b087503d8..d52c24c9844 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -954,7 +954,7 @@ dependencies = [ [[package]] name = "rustfmt-nightly" -version = "1.4.12" +version = "1.4.13" dependencies = [ "annotate-snippets 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "bytecount 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -978,7 +978,6 @@ dependencies = [ "rustc-ap-rustc_parse 651.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-ap-rustc_session 651.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-ap-rustc_span 651.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-ap-rustc_target 651.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "rustc-workspace-hack 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "rustfmt-config_proc_macro 0.2.0", "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/Cargo.toml b/Cargo.toml index de934e60b8f..a84ea4f9154 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "rustfmt-nightly" -version = "1.4.12" +version = "1.4.13" authors = ["Nicholas Cameron ", "The Rustfmt developers"] description = "Tool to find and fix Rust formatting issues" repository = "https://github.com/rust-lang/rustfmt" @@ -94,7 +94,3 @@ version = "651.0.0" [dependencies.rustc_span] package = "rustc-ap-rustc_span" version = "651.0.0" - -[dependencies.rustc_target] -package = "rustc-ap-rustc_target" -version = "651.0.0" diff --git a/src/utils.rs b/src/utils.rs index 41400399ddd..e029aa435c0 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -7,7 +7,6 @@ use rustc_ast::ast::{ use rustc_ast::ptr; use rustc_ast_pretty::pprust; use rustc_span::{sym, BytePos, ExpnId, Span, Symbol, SyntaxContext}; -use rustc_target::spec::abi; use unicode_width::UnicodeWidthStr; use crate::comment::{filter_normal_code, CharClasses, FullCodeCharKind, LineClasses}; @@ -140,19 +139,17 @@ pub(crate) fn format_extern( is_mod: bool, ) -> Cow<'static, str> { let abi = match ext { - ast::Extern::None => abi::Abi::Rust, - ast::Extern::Implicit => abi::Abi::C, - ast::Extern::Explicit(abi) => { - abi::lookup(&abi.symbol_unescaped.as_str()).unwrap_or(abi::Abi::Rust) - } + ast::Extern::None => "Rust".to_owned(), + ast::Extern::Implicit => "C".to_owned(), + ast::Extern::Explicit(abi) => abi.symbol_unescaped.to_string(), }; - if abi == abi::Abi::Rust && !is_mod { + if abi == "Rust" && !is_mod { Cow::from("") - } else if abi == abi::Abi::C && !explicit_abi { + } else if abi == "C" && !explicit_abi { Cow::from("extern ") } else { - Cow::from(format!("extern {} ", abi)) + Cow::from(format!(r#"extern "{}" "#, abi)) } } diff --git a/tests/source/issue_4086.rs b/tests/source/issue_4086.rs new file mode 100644 index 00000000000..ffa6442e930 --- /dev/null +++ b/tests/source/issue_4086.rs @@ -0,0 +1,2 @@ +#[cfg(any())] +extern "C++" {} diff --git a/tests/target/issue_4086.rs b/tests/target/issue_4086.rs new file mode 100644 index 00000000000..959d3b3d468 --- /dev/null +++ b/tests/target/issue_4086.rs @@ -0,0 +1,2 @@ +#[cfg(any())] +extern "C++" {}