summaryrefslogtreecommitdiffstats
path: root/src/tools/rustfmt/tests/target/issue-2977
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/rustfmt/tests/target/issue-2977')
-rw-r--r--src/tools/rustfmt/tests/target/issue-2977/block.rs11
-rw-r--r--src/tools/rustfmt/tests/target/issue-2977/impl.rs44
-rw-r--r--src/tools/rustfmt/tests/target/issue-2977/item.rs11
-rw-r--r--src/tools/rustfmt/tests/target/issue-2977/trait.rs44
4 files changed, 110 insertions, 0 deletions
diff --git a/src/tools/rustfmt/tests/target/issue-2977/block.rs b/src/tools/rustfmt/tests/target/issue-2977/block.rs
new file mode 100644
index 000000000..d376e370c
--- /dev/null
+++ b/src/tools/rustfmt/tests/target/issue-2977/block.rs
@@ -0,0 +1,11 @@
+macro_rules! atomic_bits {
+ ($ldrex:expr) => {
+ execute(|| {
+ asm!($ldrex
+ : "=r"(raw)
+ : "r"(address)
+ :
+ : "volatile");
+ })
+ };
+}
diff --git a/src/tools/rustfmt/tests/target/issue-2977/impl.rs b/src/tools/rustfmt/tests/target/issue-2977/impl.rs
new file mode 100644
index 000000000..8d7bb9414
--- /dev/null
+++ b/src/tools/rustfmt/tests/target/issue-2977/impl.rs
@@ -0,0 +1,44 @@
+macro_rules! atomic_bits {
+ // the println macro cannot be rewritten because of the asm macro
+ ($type:ty, $ldrex:expr, $strex:expr) => {
+ impl AtomicBits for $type {
+ unsafe fn load_excl(address: usize) -> Self {
+ let raw: $type;
+ asm!($ldrex
+ : "=r"(raw)
+ : "r"(address)
+ :
+ : "volatile");
+ raw
+ }
+
+ unsafe fn store_excl(self, address: usize) -> bool {
+ let status: $type;
+ println!("{}",
+ status);
+ status == 0
+ }
+ }
+ };
+
+ // the println macro should be rewritten here
+ ($type:ty) => {
+ fn some_func(self) {
+ let status: $type;
+ println!("{}", status);
+ }
+ };
+
+ // unrewritale macro in func
+ ($type:ty, $ldrex:expr) => {
+ unsafe fn load_excl(address: usize) -> Self {
+ let raw: $type;
+ asm!($ldrex
+ : "=r"(raw)
+ : "r"(address)
+ :
+ : "volatile");
+ raw
+ }
+ }
+}
diff --git a/src/tools/rustfmt/tests/target/issue-2977/item.rs b/src/tools/rustfmt/tests/target/issue-2977/item.rs
new file mode 100644
index 000000000..857065ca9
--- /dev/null
+++ b/src/tools/rustfmt/tests/target/issue-2977/item.rs
@@ -0,0 +1,11 @@
+macro_rules! atomic_bits {
+ ($ldrex:expr) => {
+ some_macro!(pub fn foo() {
+ asm!($ldrex
+ : "=r"(raw)
+ : "r"(address)
+ :
+ : "volatile");
+ })
+ };
+}
diff --git a/src/tools/rustfmt/tests/target/issue-2977/trait.rs b/src/tools/rustfmt/tests/target/issue-2977/trait.rs
new file mode 100644
index 000000000..ae20668cd
--- /dev/null
+++ b/src/tools/rustfmt/tests/target/issue-2977/trait.rs
@@ -0,0 +1,44 @@
+macro_rules! atomic_bits {
+ // the println macro cannot be rewritten because of the asm macro
+ ($type:ty, $ldrex:expr, $strex:expr) => {
+ trait $type {
+ unsafe fn load_excl(address: usize) -> Self {
+ let raw: $type;
+ asm!($ldrex
+ : "=r"(raw)
+ : "r"(address)
+ :
+ : "volatile");
+ raw
+ }
+
+ unsafe fn store_excl(self, address: usize) -> bool {
+ let status: $type;
+ println!("{}",
+ status);
+ status == 0
+ }
+ }
+ };
+
+ // the println macro should be rewritten here
+ ($type:ty) => {
+ fn some_func(self) {
+ let status: $type;
+ println!("{}", status);
+ }
+ };
+
+ // unrewritale macro in func
+ ($type:ty, $ldrex:expr) => {
+ unsafe fn load_excl(address: usize) -> Self {
+ let raw: $type;
+ asm!($ldrex
+ : "=r"(raw)
+ : "r"(address)
+ :
+ : "volatile");
+ raw
+ }
+ }
+}