diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2015-10-08 15:17:20 +0200 |
|---|---|---|
| committer | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2015-10-08 19:39:27 +0200 |
| commit | 0836a6f851fdcf250cdef9b38d87b53874d8f8f1 (patch) | |
| tree | e129482dc16912dc2c6fbe44c12185b94859e81a | |
| parent | 3448e3cd4080932e95a95c15020670eb5beebfb9 (diff) | |
| download | rust-0836a6f851fdcf250cdef9b38d87b53874d8f8f1.tar.gz rust-0836a6f851fdcf250cdef9b38d87b53874d8f8f1.zip | |
Add E0510 error explanation
| -rw-r--r-- | src/librustc_trans/diagnostics.rs | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/src/librustc_trans/diagnostics.rs b/src/librustc_trans/diagnostics.rs index b1854d998a2..1a848a26d7e 100644 --- a/src/librustc_trans/diagnostics.rs +++ b/src/librustc_trans/diagnostics.rs @@ -12,6 +12,39 @@ register_long_diagnostics! { +E0510: r##" +`return_address` was used in an invalid context. Erroneous code example: + +``` +extern "rust-intrinsic" { + fn return_address() -> *const u8; +} + +pub unsafe fn by_value() -> i32 { + let _ = return_address(); + // error: invalid use of `return_address` intrinsic: function does + // not use out pointer + 0 +} +``` + +Returned values are stored in registers. In the case where the returned +type doesn't fit in a register, the function returns `()` and has an +additional input argument, this is a pointer where the result should +be written. Example: + +``` +extern "rust-intrinsic" { + fn return_address() -> *const u8; +} + +pub unsafe fn by_pointer() -> String { + let _ = return_address(); + String::new() // ok! +} +``` +"##, + E0512: r##" A transmute was called on types with different sizes. Erroneous code example: @@ -59,6 +92,5 @@ let x = &[0, 1, 2][2]; // ok } register_diagnostics! { - E0510, // invalid use of `return_address` intrinsic: function does not use out pointer E0511, // invalid monomorphization of `{}` intrinsic } |
