-// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
+// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// In vim you can `:set tw=80` and use `gq` to wrap paragraphs. Use `:set tw=0` to disable.
register_long_diagnostics! {
E0660: r##"
+The argument to the `asm` macro is not well-formed.
+
+Erroneous code example:
+
+```compile_fail,E0660
+asm!("nop" "nop");
+```
+
+Considering that this would be a long explanation, we instead recommend you to
+take a look at the unstable book:
+https://doc.rust-lang.org/unstable-book/language-features/asm.html
"##,
E0661: r##"
+An invalid syntax was passed to the second argument of an `asm` macro line.
+
+Erroneous code example:
+
+```compile_fail,E0661
+let a;
+asm!("nop" : "r"(a));
+```
+
+Considering that this would be a long explanation, we instead recommend you to
+take a look at the unstable book:
+https://doc.rust-lang.org/unstable-book/language-features/asm.html
"##,
}
+++ /dev/null
-// Copyright 2014 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.
-#![feature(asm)]
-
-fn main() {
- let a;
- asm!("nop" "nop"); //~ ERROR malformed inline assembly
- asm!("nop" "nop" : "=r"(a)); //~ ERROR malformed inline assembly
-}
--- /dev/null
+// Copyright 2014 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.
+
+#![feature(asm)]
+
+fn main() {
+ let a;
+ asm!("nop" "nop");
+ asm!("nop" "nop" : "=r"(a));
+}
--- /dev/null
+error[E0660]: malformed inline assembly
+ --> $DIR/E0660.rs:15:5
+ |
+LL | asm!("nop" "nop");
+ | ^^^^^^^^^^^^^^^^^^
+
+error[E0660]: malformed inline assembly
+ --> $DIR/E0660.rs:16:5
+ |
+LL | asm!("nop" "nop" : "=r"(a));
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0660`.
--- /dev/null
+// Copyright 2018 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.
+
+#![feature(asm)]
+
+fn main() {
+ let a;
+ asm!("nop" : "r"(a));
+}
--- /dev/null
+error[E0661]: output operand constraint lacks '=' or '+'
+ --> $DIR/E0661.rs:15:18
+ |
+LL | asm!("nop" : "r"(a));
+ | ^^^
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0661`.