mirror of
https://github.com/rust-lang/rust.git
synced 2025-06-07 12:48:30 +00:00
Auto merge of #67903 - Dylan-DPC:rollup-k9djyrf, r=Dylan-DPC
Rollup of 5 pull requests Successful merges: - #67818 (rustdoc: Avoid panic when parsing codeblocks for playground links) - #67845 (Also remove const-hack for abs) - #67879 (Remove negative number check from float sqrt) - #67881 (Add backticks to various diagnostics) - #67882 (remove bespoke flock bindings) Failed merges: r? @ghost
This commit is contained in:
commit
bc1571cc3c
@ -2001,6 +2001,9 @@ $EndFeature, "
|
||||
#[inline]
|
||||
#[rustc_inherit_overflow_checks]
|
||||
pub const fn abs(self) -> Self {
|
||||
// Note that the #[inline] above means that the overflow
|
||||
// semantics of the subtraction depend on the crate we're being
|
||||
// inlined into.
|
||||
if self.is_negative() {
|
||||
-self
|
||||
} else {
|
||||
|
@ -661,7 +661,7 @@ impl<'a, 'tcx> InferCtxt<'a, 'tcx> {
|
||||
},
|
||||
ObligationCauseCode::IfExpression(box IfExpressionCause { then, outer, semicolon }) => {
|
||||
err.span_label(then, "expected because of this");
|
||||
outer.map(|sp| err.span_label(sp, "if and else have incompatible types"));
|
||||
outer.map(|sp| err.span_label(sp, "`if` and `else` have incompatible types"));
|
||||
if let Some(sp) = semicolon {
|
||||
err.span_suggestion_short(
|
||||
sp,
|
||||
@ -1883,13 +1883,13 @@ impl<'tcx> ObligationCause<'tcx> {
|
||||
hir::MatchSource::TryDesugar => {
|
||||
"try expression alternatives have incompatible types"
|
||||
}
|
||||
_ => "match arms have incompatible types",
|
||||
_ => "`match` arms have incompatible types",
|
||||
})
|
||||
}
|
||||
IfExpression { .. } => Error0308("if and else have incompatible types"),
|
||||
IfExpressionWithNoElse => Error0317("if may be missing an else clause"),
|
||||
MainFunctionType => Error0580("main function has wrong type"),
|
||||
StartFunctionType => Error0308("start function has wrong type"),
|
||||
IfExpression { .. } => Error0308("`if` and `else` have incompatible types"),
|
||||
IfExpressionWithNoElse => Error0317("`if` may be missing an `else` clause"),
|
||||
MainFunctionType => Error0580("`main` function has wrong type"),
|
||||
StartFunctionType => Error0308("`#[start]` function has wrong type"),
|
||||
IntrinsicType => Error0308("intrinsic has wrong type"),
|
||||
MethodReceiver => Error0308("mismatched `self` parameter type"),
|
||||
|
||||
@ -1917,12 +1917,12 @@ impl<'tcx> ObligationCause<'tcx> {
|
||||
ExprAssignable => "expression is assignable",
|
||||
MatchExpressionArm(box MatchExpressionArmCause { source, .. }) => match source {
|
||||
hir::MatchSource::IfLetDesugar { .. } => "`if let` arms have compatible types",
|
||||
_ => "match arms have compatible types",
|
||||
_ => "`match` arms have compatible types",
|
||||
},
|
||||
IfExpression { .. } => "if and else have incompatible types",
|
||||
IfExpressionWithNoElse => "if missing an else returns ()",
|
||||
IfExpression { .. } => "`if` and `else` have incompatible types",
|
||||
IfExpressionWithNoElse => "`if` missing an `else` returns `()`",
|
||||
MainFunctionType => "`main` function has the correct type",
|
||||
StartFunctionType => "`start` function has the correct type",
|
||||
StartFunctionType => "`#[start]` function has the correct type",
|
||||
IntrinsicType => "intrinsic has the correct type",
|
||||
MethodReceiver => "method receiver has the correct type",
|
||||
_ => "types are compatible",
|
||||
|
@ -13,96 +13,9 @@ use std::path::Path;
|
||||
cfg_if! {
|
||||
if #[cfg(unix)] {
|
||||
use std::ffi::{CString, OsStr};
|
||||
use std::mem;
|
||||
use std::os::unix::prelude::*;
|
||||
|
||||
#[cfg(any(target_os = "linux", target_os = "android"))]
|
||||
mod os {
|
||||
#[repr(C)]
|
||||
pub struct flock {
|
||||
pub l_type: libc::c_short,
|
||||
pub l_whence: libc::c_short,
|
||||
pub l_start: libc::off_t,
|
||||
pub l_len: libc::off_t,
|
||||
pub l_pid: libc::pid_t,
|
||||
|
||||
// not actually here, but brings in line with freebsd
|
||||
pub l_sysid: libc::c_int,
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(target_os = "freebsd")]
|
||||
mod os {
|
||||
#[repr(C)]
|
||||
pub struct flock {
|
||||
pub l_start: libc::off_t,
|
||||
pub l_len: libc::off_t,
|
||||
pub l_pid: libc::pid_t,
|
||||
pub l_type: libc::c_short,
|
||||
pub l_whence: libc::c_short,
|
||||
pub l_sysid: libc::c_int,
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(any(target_os = "dragonfly",
|
||||
target_os = "netbsd",
|
||||
target_os = "openbsd"))]
|
||||
mod os {
|
||||
#[repr(C)]
|
||||
pub struct flock {
|
||||
pub l_start: libc::off_t,
|
||||
pub l_len: libc::off_t,
|
||||
pub l_pid: libc::pid_t,
|
||||
pub l_type: libc::c_short,
|
||||
pub l_whence: libc::c_short,
|
||||
|
||||
// not actually here, but brings in line with freebsd
|
||||
pub l_sysid: libc::c_int,
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(target_os = "haiku")]
|
||||
mod os {
|
||||
#[repr(C)]
|
||||
pub struct flock {
|
||||
pub l_type: libc::c_short,
|
||||
pub l_whence: libc::c_short,
|
||||
pub l_start: libc::off_t,
|
||||
pub l_len: libc::off_t,
|
||||
pub l_pid: libc::pid_t,
|
||||
|
||||
// not actually here, but brings in line with freebsd
|
||||
pub l_sysid: libc::c_int,
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(any(target_os = "macos", target_os = "ios"))]
|
||||
mod os {
|
||||
#[repr(C)]
|
||||
pub struct flock {
|
||||
pub l_start: libc::off_t,
|
||||
pub l_len: libc::off_t,
|
||||
pub l_pid: libc::pid_t,
|
||||
pub l_type: libc::c_short,
|
||||
pub l_whence: libc::c_short,
|
||||
|
||||
// not actually here, but brings in line with freebsd
|
||||
pub l_sysid: libc::c_int,
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(target_os = "solaris")]
|
||||
mod os {
|
||||
#[repr(C)]
|
||||
pub struct flock {
|
||||
pub l_type: libc::c_short,
|
||||
pub l_whence: libc::c_short,
|
||||
pub l_start: libc::off_t,
|
||||
pub l_len: libc::off_t,
|
||||
pub l_sysid: libc::c_int,
|
||||
pub l_pid: libc::pid_t,
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct Lock {
|
||||
fd: libc::c_int,
|
||||
@ -132,19 +45,17 @@ cfg_if! {
|
||||
}
|
||||
|
||||
let lock_type = if exclusive {
|
||||
libc::F_WRLCK as libc::c_short
|
||||
libc::F_WRLCK
|
||||
} else {
|
||||
libc::F_RDLCK as libc::c_short
|
||||
libc::F_RDLCK
|
||||
};
|
||||
|
||||
let flock = os::flock {
|
||||
l_start: 0,
|
||||
l_len: 0,
|
||||
l_pid: 0,
|
||||
l_whence: libc::SEEK_SET as libc::c_short,
|
||||
l_type: lock_type,
|
||||
l_sysid: 0,
|
||||
};
|
||||
let mut flock: libc::flock = unsafe { mem::zeroed() };
|
||||
flock.l_type = lock_type as libc::c_short;
|
||||
flock.l_whence = libc::SEEK_SET as libc::c_short;
|
||||
flock.l_start = 0;
|
||||
flock.l_len = 0;
|
||||
|
||||
let cmd = if wait { libc::F_SETLKW } else { libc::F_SETLK };
|
||||
let ret = unsafe {
|
||||
libc::fcntl(fd, cmd, &flock)
|
||||
@ -161,14 +72,12 @@ cfg_if! {
|
||||
|
||||
impl Drop for Lock {
|
||||
fn drop(&mut self) {
|
||||
let flock = os::flock {
|
||||
l_start: 0,
|
||||
l_len: 0,
|
||||
l_pid: 0,
|
||||
l_whence: libc::SEEK_SET as libc::c_short,
|
||||
l_type: libc::F_UNLCK as libc::c_short,
|
||||
l_sysid: 0,
|
||||
};
|
||||
let mut flock: libc::flock = unsafe { mem::zeroed() };
|
||||
flock.l_type = libc::F_UNLCK as libc::c_short;
|
||||
flock.l_whence = libc::SEEK_SET as libc::c_short;
|
||||
flock.l_start = 0;
|
||||
flock.l_len = 0;
|
||||
|
||||
unsafe {
|
||||
libc::fcntl(self.fd, libc::F_SETLK, &flock);
|
||||
libc::close(self.fd);
|
||||
|
@ -134,7 +134,7 @@ fn find_item(item: &Item<'_>, ctxt: &mut EntryContext<'_, '_>, at_root: bool) {
|
||||
ctxt.start_fn = Some((item.hir_id, item.span));
|
||||
} else {
|
||||
struct_span_err!(ctxt.session, item.span, E0138, "multiple `start` functions")
|
||||
.span_label(ctxt.start_fn.unwrap().1, "previous `start` function here")
|
||||
.span_label(ctxt.start_fn.unwrap().1, "previous `#[start]` function here")
|
||||
.span_label(item.span, "multiple `start` functions")
|
||||
.emit();
|
||||
}
|
||||
|
@ -81,7 +81,7 @@ pub fn options() -> TargetOptions {
|
||||
dynamic_linking: true,
|
||||
only_cdylib: true,
|
||||
|
||||
// This means we'll just embed a `start` function in the wasm module
|
||||
// This means we'll just embed a `#[start]` function in the wasm module
|
||||
executables: true,
|
||||
|
||||
// relatively self-explanatory!
|
||||
|
@ -298,7 +298,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
||||
// LL || 10u32
|
||||
// || ^^^^^ expected `i32`, found `u32`
|
||||
// LL || };
|
||||
// ||_____- if and else have incompatible types
|
||||
// ||_____- `if` and `else` have incompatible types
|
||||
// ```
|
||||
Some(span)
|
||||
} else {
|
||||
@ -340,7 +340,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
||||
// by not pointing at the entire expression:
|
||||
// ```
|
||||
// 2 | let x = if true {
|
||||
// | ------- if and else have incompatible types
|
||||
// | ------- `if` and `else` have incompatible types
|
||||
// 3 | 3
|
||||
// | - expected because of this
|
||||
// 4 | } else {
|
||||
|
@ -202,17 +202,7 @@ fn run_test(
|
||||
opts: &TestOptions,
|
||||
edition: Edition,
|
||||
) -> Result<(), TestFailure> {
|
||||
let (test, line_offset) = match panic::catch_unwind(|| {
|
||||
make_test(test, Some(cratename), as_test_harness, opts, edition)
|
||||
}) {
|
||||
Ok((test, line_offset)) => (test, line_offset),
|
||||
Err(cause) if cause.is::<errors::FatalErrorMarker>() => {
|
||||
// If the parser used by `make_test` panicked due to a fatal error, pass the test code
|
||||
// through unchanged. The error will be reported during compilation.
|
||||
(test.to_owned(), 0)
|
||||
}
|
||||
Err(cause) => panic::resume_unwind(cause),
|
||||
};
|
||||
let (test, line_offset) = make_test(test, Some(cratename), as_test_harness, opts, edition);
|
||||
|
||||
// FIXME(#44940): if doctests ever support path remapping, then this filename
|
||||
// needs to be the result of `SourceMap::span_to_unmapped_path`.
|
||||
@ -362,11 +352,6 @@ fn run_test(
|
||||
|
||||
/// Transforms a test into code that can be compiled into a Rust binary, and returns the number of
|
||||
/// lines before the test code begins.
|
||||
///
|
||||
/// # Panics
|
||||
///
|
||||
/// This function uses the compiler's parser internally. The parser will panic if it encounters a
|
||||
/// fatal error while parsing the test.
|
||||
pub fn make_test(
|
||||
s: &str,
|
||||
cratename: Option<&str>,
|
||||
@ -401,7 +386,8 @@ pub fn make_test(
|
||||
|
||||
// Uses libsyntax to parse the doctest and find if there's a main fn and the extern
|
||||
// crate already is included.
|
||||
let (already_has_main, already_has_extern_crate, found_macro) = with_globals(edition, || {
|
||||
let result = rustc_driver::catch_fatal_errors(|| {
|
||||
with_globals(edition, || {
|
||||
use errors::emitter::EmitterWriter;
|
||||
use errors::Handler;
|
||||
use rustc_parse::maybe_new_parser_from_source_str;
|
||||
@ -414,7 +400,8 @@ pub fn make_test(
|
||||
// Any errors in parsing should also appear when the doctest is compiled for real, so just
|
||||
// send all the errors that libsyntax emits directly into a `Sink` instead of stderr.
|
||||
let cm = Lrc::new(SourceMap::new(FilePathMapping::empty()));
|
||||
let emitter = EmitterWriter::new(box io::sink(), None, false, false, false, None, false);
|
||||
let emitter =
|
||||
EmitterWriter::new(box io::sink(), None, false, false, false, None, false);
|
||||
// FIXME(misdreavus): pass `-Z treat-err-as-bug` to the doctest parser
|
||||
let handler = Handler::with_emitter(false, None, box emitter);
|
||||
let sess = ParseSess::with_span_handler(handler, cm);
|
||||
@ -477,7 +464,16 @@ pub fn make_test(
|
||||
}
|
||||
|
||||
(found_main, found_extern_crate, found_macro)
|
||||
})
|
||||
});
|
||||
let (already_has_main, already_has_extern_crate, found_macro) = match result {
|
||||
Ok(result) => result,
|
||||
Err(ErrorReported) => {
|
||||
// If the parser panicked due to a fatal error, pass the test code through unchanged.
|
||||
// The error will be reported during compilation.
|
||||
return (s.to_owned(), 0);
|
||||
}
|
||||
};
|
||||
|
||||
// If a doctest's `fn main` is being masked by a wrapper macro, the parsing loop above won't
|
||||
// see it. In that case, run the old text-based scan to see if they at least have a main
|
||||
|
@ -376,7 +376,7 @@ impl f32 {
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[inline]
|
||||
pub fn sqrt(self) -> f32 {
|
||||
if self < 0.0 { NAN } else { unsafe { intrinsics::sqrtf32(self) } }
|
||||
unsafe { intrinsics::sqrtf32(self) }
|
||||
}
|
||||
|
||||
/// Returns `e^(self)`, (the exponential function).
|
||||
|
@ -342,7 +342,7 @@ impl f64 {
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
#[inline]
|
||||
pub fn sqrt(self) -> f64 {
|
||||
if self < 0.0 { NAN } else { unsafe { intrinsics::sqrtf64(self) } }
|
||||
unsafe { intrinsics::sqrtf64(self) }
|
||||
}
|
||||
|
||||
/// Returns `e^(self)`, (the exponential function).
|
||||
|
@ -387,8 +387,8 @@ impl<'a> Visitor<'a> for PostExpansionVisitor<'a> {
|
||||
&self,
|
||||
start,
|
||||
i.span,
|
||||
"a `#[start]` function is an experimental \
|
||||
feature whose signature may change \
|
||||
"`#[start]` functions are experimental \
|
||||
and their signature may change \
|
||||
over time"
|
||||
);
|
||||
}
|
||||
|
21
src/test/rustdoc/playground-syntax-error.rs
Normal file
21
src/test/rustdoc/playground-syntax-error.rs
Normal file
@ -0,0 +1,21 @@
|
||||
#![crate_name = "foo"]
|
||||
#![doc(html_playground_url = "https://play.rust-lang.org/")]
|
||||
|
||||
/// bar docs
|
||||
///
|
||||
/// ```edition2015
|
||||
/// use std::future::Future;
|
||||
/// use std::pin::Pin;
|
||||
/// fn foo_recursive(n: usize) -> Pin<Box<dyn Future<Output = ()>>> {
|
||||
/// Box::pin(async move {
|
||||
/// if n > 0 {
|
||||
/// foo_recursive(n - 1).await;
|
||||
/// }
|
||||
/// })
|
||||
/// }
|
||||
/// ```
|
||||
pub fn bar() {}
|
||||
|
||||
// @has foo/fn.bar.html
|
||||
// @has - '//a[@class="test-arrow"]' "Run"
|
||||
// @has - '//*[@class="docblock"]' 'foo_recursive'
|
@ -1,6 +1,6 @@
|
||||
// edition:2018
|
||||
async fn f() -> i32 {
|
||||
if true { //~ ERROR if may be missing an else clause
|
||||
if true { //~ ERROR `if` may be missing an `else` clause
|
||||
return 0;
|
||||
}
|
||||
// An `if` block without `else` causes the type table not to have a type for this expr.
|
||||
|
@ -1,4 +1,4 @@
|
||||
error[E0317]: if may be missing an else clause
|
||||
error[E0317]: `if` may be missing an `else` clause
|
||||
--> $DIR/issue-66387-if-without-else.rs:3:5
|
||||
|
|
||||
LL | / if true {
|
||||
|
@ -1,6 +1,6 @@
|
||||
mod m1 {}
|
||||
|
||||
fn main(arguments: Vec<String>) { //~ ERROR main function has wrong type
|
||||
fn main(arguments: Vec<String>) { //~ ERROR `main` function has wrong type
|
||||
log(debug, m1::arguments);
|
||||
//~^ ERROR cannot find function `log` in this scope
|
||||
//~| ERROR cannot find value `debug` in this scope
|
||||
|
@ -16,7 +16,7 @@ error[E0425]: cannot find value `arguments` in module `m1`
|
||||
LL | log(debug, m1::arguments);
|
||||
| ^^^^^^^^^ not found in `m1`
|
||||
|
||||
error[E0580]: main function has wrong type
|
||||
error[E0580]: `main` function has wrong type
|
||||
--> $DIR/bad-expr-path.rs:3:1
|
||||
|
|
||||
LL | fn main(arguments: Vec<String>) {
|
||||
|
@ -2,7 +2,7 @@ mod m1 {
|
||||
pub mod arguments {}
|
||||
}
|
||||
|
||||
fn main(arguments: Vec<String>) { //~ ERROR main function has wrong type
|
||||
fn main(arguments: Vec<String>) { //~ ERROR `main` function has wrong type
|
||||
log(debug, m1::arguments);
|
||||
//~^ ERROR cannot find function `log` in this scope
|
||||
//~| ERROR cannot find value `debug` in this scope
|
||||
|
@ -16,7 +16,7 @@ error[E0423]: expected value, found module `m1::arguments`
|
||||
LL | log(debug, m1::arguments);
|
||||
| ^^^^^^^^^^^^^ not a value
|
||||
|
||||
error[E0580]: main function has wrong type
|
||||
error[E0580]: `main` function has wrong type
|
||||
--> $DIR/bad-expr-path2.rs:5:1
|
||||
|
|
||||
LL | fn main(arguments: Vec<String>) {
|
||||
|
@ -1 +1 @@
|
||||
fn main(x: isize) { } //~ ERROR: main function has wrong type [E0580]
|
||||
fn main(x: isize) { } //~ ERROR: `main` function has wrong type [E0580]
|
||||
|
@ -1,4 +1,4 @@
|
||||
error[E0580]: main function has wrong type
|
||||
error[E0580]: `main` function has wrong type
|
||||
--> $DIR/bad-main.rs:1:1
|
||||
|
|
||||
LL | fn main(x: isize) { }
|
||||
|
@ -1,4 +1,4 @@
|
||||
error[E0317]: if may be missing an else clause
|
||||
error[E0317]: `if` may be missing an `else` clause
|
||||
--> $DIR/issue-50577.rs:7:16
|
||||
|
|
||||
LL | Drop = assert_eq!(1, 1)
|
||||
|
@ -5,7 +5,7 @@
|
||||
fn main() {
|
||||
enum Foo {
|
||||
Drop = assert_eq!(1, 1)
|
||||
//[stock,if_match]~^ ERROR if may be missing an else clause
|
||||
//[stock,if_match]~^ ERROR `if` may be missing an `else` clause
|
||||
//[stock]~^^ ERROR `match` is not allowed in a `const`
|
||||
//[stock]~| ERROR `match` is not allowed in a `const`
|
||||
//[stock]~| ERROR `if` is not allowed in a `const`
|
||||
|
@ -28,7 +28,7 @@ LL | Drop = assert_eq!(1, 1)
|
||||
= help: add `#![feature(const_if_match)]` to the crate attributes to enable
|
||||
= note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info)
|
||||
|
||||
error[E0317]: if may be missing an else clause
|
||||
error[E0317]: `if` may be missing an `else` clause
|
||||
--> $DIR/issue-50577.rs:7:16
|
||||
|
|
||||
LL | Drop = assert_eq!(1, 1)
|
||||
|
@ -2,7 +2,7 @@ error[E0138]: multiple `start` functions
|
||||
--> $DIR/E0138.rs:7:1
|
||||
|
|
||||
LL | fn foo(argc: isize, argv: *const *const u8) -> isize { 0 }
|
||||
| ---------------------------------------------------------- previous `start` function here
|
||||
| ---------------------------------------------------------- previous `#[start]` function here
|
||||
...
|
||||
LL | fn f(argc: isize, argv: *const *const u8) -> isize { 0 }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ multiple `start` functions
|
||||
|
2
src/test/ui/extern/extern-main-fn.rs
vendored
2
src/test/ui/extern/extern-main-fn.rs
vendored
@ -1 +1 @@
|
||||
extern fn main() {} //~ ERROR: main function has wrong type [E0580]
|
||||
extern fn main() {} //~ ERROR: `main` function has wrong type [E0580]
|
||||
|
2
src/test/ui/extern/extern-main-fn.stderr
vendored
2
src/test/ui/extern/extern-main-fn.stderr
vendored
@ -1,4 +1,4 @@
|
||||
error[E0580]: main function has wrong type
|
||||
error[E0580]: `main` function has wrong type
|
||||
--> $DIR/extern-main-fn.rs:1:1
|
||||
|
|
||||
LL | extern fn main() {}
|
||||
|
@ -1,3 +1,3 @@
|
||||
#[start]
|
||||
fn foo(_: isize, _: *const *const u8) -> isize { 0 }
|
||||
//~^ ERROR a `#[start]` function is an experimental feature
|
||||
//~^ ERROR `#[start]` functions are experimental
|
||||
|
@ -1,4 +1,4 @@
|
||||
error[E0658]: a `#[start]` function is an experimental feature whose signature may change over time
|
||||
error[E0658]: `#[start]` functions are experimental and their signature may change over time
|
||||
--> $DIR/feature-gate-start.rs:2:1
|
||||
|
|
||||
LL | fn foo(_: isize, _: *const *const u8) -> isize { 0 }
|
||||
|
@ -4,43 +4,43 @@ fn main() {
|
||||
} else {
|
||||
2u32
|
||||
};
|
||||
//~^^ ERROR if and else have incompatible types
|
||||
//~^^ ERROR `if` and `else` have incompatible types
|
||||
let _ = if true { 42i32 } else { 42u32 };
|
||||
//~^ ERROR if and else have incompatible types
|
||||
//~^ ERROR `if` and `else` have incompatible types
|
||||
let _ = if true {
|
||||
3u32;
|
||||
} else {
|
||||
4u32
|
||||
};
|
||||
//~^^ ERROR if and else have incompatible types
|
||||
//~^^ ERROR `if` and `else` have incompatible types
|
||||
let _ = if true {
|
||||
5u32
|
||||
} else {
|
||||
6u32;
|
||||
};
|
||||
//~^^ ERROR if and else have incompatible types
|
||||
//~^^ ERROR `if` and `else` have incompatible types
|
||||
let _ = if true {
|
||||
7i32;
|
||||
} else {
|
||||
8u32
|
||||
};
|
||||
//~^^ ERROR if and else have incompatible types
|
||||
//~^^ ERROR `if` and `else` have incompatible types
|
||||
let _ = if true {
|
||||
9i32
|
||||
} else {
|
||||
10u32;
|
||||
};
|
||||
//~^^ ERROR if and else have incompatible types
|
||||
//~^^ ERROR `if` and `else` have incompatible types
|
||||
let _ = if true {
|
||||
|
||||
} else {
|
||||
11u32
|
||||
};
|
||||
//~^^ ERROR if and else have incompatible types
|
||||
//~^^ ERROR `if` and `else` have incompatible types
|
||||
let _ = if true {
|
||||
12i32
|
||||
} else {
|
||||
|
||||
};
|
||||
//~^^^ ERROR if and else have incompatible types
|
||||
//~^^^ ERROR `if` and `else` have incompatible types
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
error[E0308]: if and else have incompatible types
|
||||
error[E0308]: `if` and `else` have incompatible types
|
||||
--> $DIR/if-else-type-mismatch.rs:5:9
|
||||
|
|
||||
LL | let _ = if true {
|
||||
@ -9,9 +9,9 @@ LL | | } else {
|
||||
LL | | 2u32
|
||||
| | ^^^^ expected `i32`, found `u32`
|
||||
LL | | };
|
||||
| |_____- if and else have incompatible types
|
||||
| |_____- `if` and `else` have incompatible types
|
||||
|
||||
error[E0308]: if and else have incompatible types
|
||||
error[E0308]: `if` and `else` have incompatible types
|
||||
--> $DIR/if-else-type-mismatch.rs:8:38
|
||||
|
|
||||
LL | let _ = if true { 42i32 } else { 42u32 };
|
||||
@ -19,7 +19,7 @@ LL | let _ = if true { 42i32 } else { 42u32 };
|
||||
| |
|
||||
| expected because of this
|
||||
|
||||
error[E0308]: if and else have incompatible types
|
||||
error[E0308]: `if` and `else` have incompatible types
|
||||
--> $DIR/if-else-type-mismatch.rs:13:9
|
||||
|
|
||||
LL | let _ = if true {
|
||||
@ -33,9 +33,9 @@ LL | | } else {
|
||||
LL | | 4u32
|
||||
| | ^^^^ expected `()`, found `u32`
|
||||
LL | | };
|
||||
| |_____- if and else have incompatible types
|
||||
| |_____- `if` and `else` have incompatible types
|
||||
|
||||
error[E0308]: if and else have incompatible types
|
||||
error[E0308]: `if` and `else` have incompatible types
|
||||
--> $DIR/if-else-type-mismatch.rs:19:9
|
||||
|
|
||||
LL | let _ = if true {
|
||||
@ -49,9 +49,9 @@ LL | | 6u32;
|
||||
| | | help: consider removing this semicolon
|
||||
| | expected `u32`, found `()`
|
||||
LL | | };
|
||||
| |_____- if and else have incompatible types
|
||||
| |_____- `if` and `else` have incompatible types
|
||||
|
||||
error[E0308]: if and else have incompatible types
|
||||
error[E0308]: `if` and `else` have incompatible types
|
||||
--> $DIR/if-else-type-mismatch.rs:25:9
|
||||
|
|
||||
LL | let _ = if true {
|
||||
@ -62,9 +62,9 @@ LL | | } else {
|
||||
LL | | 8u32
|
||||
| | ^^^^ expected `()`, found `u32`
|
||||
LL | | };
|
||||
| |_____- if and else have incompatible types
|
||||
| |_____- `if` and `else` have incompatible types
|
||||
|
||||
error[E0308]: if and else have incompatible types
|
||||
error[E0308]: `if` and `else` have incompatible types
|
||||
--> $DIR/if-else-type-mismatch.rs:31:9
|
||||
|
|
||||
LL | let _ = if true {
|
||||
@ -75,9 +75,9 @@ LL | | } else {
|
||||
LL | | 10u32;
|
||||
| | ^^^^^^ expected `i32`, found `()`
|
||||
LL | | };
|
||||
| |_____- if and else have incompatible types
|
||||
| |_____- `if` and `else` have incompatible types
|
||||
|
||||
error[E0308]: if and else have incompatible types
|
||||
error[E0308]: `if` and `else` have incompatible types
|
||||
--> $DIR/if-else-type-mismatch.rs:37:9
|
||||
|
|
||||
LL | let _ = if true {
|
||||
@ -88,11 +88,11 @@ LL | | } else {
|
||||
LL | 11u32
|
||||
| ^^^^^ expected `()`, found `u32`
|
||||
|
||||
error[E0308]: if and else have incompatible types
|
||||
error[E0308]: `if` and `else` have incompatible types
|
||||
--> $DIR/if-else-type-mismatch.rs:42:12
|
||||
|
|
||||
LL | let _ = if true {
|
||||
| ------- if and else have incompatible types
|
||||
| ------- `if` and `else` have incompatible types
|
||||
LL | 12i32
|
||||
| ----- expected because of this
|
||||
LL | } else {
|
||||
|
@ -1,5 +1,5 @@
|
||||
fn main() {
|
||||
let x = if true { 10i32 } else { 10u32 };
|
||||
//~^ ERROR if and else have incompatible types
|
||||
//~^ ERROR `if` and `else` have incompatible types
|
||||
//~| expected `i32`, found `u32`
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
error[E0308]: if and else have incompatible types
|
||||
error[E0308]: `if` and `else` have incompatible types
|
||||
--> $DIR/if-branch-types.rs:2:38
|
||||
|
|
||||
LL | let x = if true { 10i32 } else { 10u32 };
|
||||
|
@ -1,11 +1,11 @@
|
||||
fn main() {
|
||||
if let Some(b) = None {
|
||||
//~^ NOTE if and else have incompatible types
|
||||
//~^ NOTE `if` and `else` have incompatible types
|
||||
()
|
||||
//~^ NOTE expected because of this
|
||||
} else {
|
||||
1
|
||||
};
|
||||
//~^^ ERROR: if and else have incompatible types
|
||||
//~^^ ERROR: `if` and `else` have incompatible types
|
||||
//~| NOTE expected `()`, found integer
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
error[E0308]: if and else have incompatible types
|
||||
error[E0308]: `if` and `else` have incompatible types
|
||||
--> $DIR/if-let-arm-types.rs:7:9
|
||||
|
|
||||
LL | / if let Some(b) = None {
|
||||
@ -10,7 +10,7 @@ LL | | } else {
|
||||
LL | | 1
|
||||
| | ^ expected `()`, found integer
|
||||
LL | | };
|
||||
| |_____- if and else have incompatible types
|
||||
| |_____- `if` and `else` have incompatible types
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
@ -2,14 +2,14 @@ fn foo(bar: usize) -> usize {
|
||||
if bar % 5 == 0 {
|
||||
return 3;
|
||||
}
|
||||
//~^^^ ERROR if may be missing an else clause
|
||||
//~^^^ ERROR `if` may be missing an `else` clause
|
||||
}
|
||||
|
||||
fn foo2(bar: usize) -> usize {
|
||||
let x: usize = if bar % 5 == 0 {
|
||||
return 3;
|
||||
};
|
||||
//~^^^ ERROR if may be missing an else clause
|
||||
//~^^^ ERROR `if` may be missing an `else` clause
|
||||
x
|
||||
}
|
||||
|
||||
@ -17,21 +17,21 @@ fn foo3(bar: usize) -> usize {
|
||||
if bar % 5 == 0 {
|
||||
3
|
||||
}
|
||||
//~^^^ ERROR if may be missing an else clause
|
||||
//~^^^ ERROR `if` may be missing an `else` clause
|
||||
}
|
||||
|
||||
fn foo_let(bar: usize) -> usize {
|
||||
if let 0 = 1 {
|
||||
return 3;
|
||||
}
|
||||
//~^^^ ERROR if may be missing an else clause
|
||||
//~^^^ ERROR `if` may be missing an `else` clause
|
||||
}
|
||||
|
||||
fn foo2_let(bar: usize) -> usize {
|
||||
let x: usize = if let 0 = 1 {
|
||||
return 3;
|
||||
};
|
||||
//~^^^ ERROR if may be missing an else clause
|
||||
//~^^^ ERROR `if` may be missing an `else` clause
|
||||
x
|
||||
}
|
||||
|
||||
@ -39,7 +39,7 @@ fn foo3_let(bar: usize) -> usize {
|
||||
if let 0 = 1 {
|
||||
3
|
||||
}
|
||||
//~^^^ ERROR if may be missing an else clause
|
||||
//~^^^ ERROR `if` may be missing an `else` clause
|
||||
}
|
||||
|
||||
// FIXME(60254): deduplicate first error in favor of second.
|
||||
|
@ -1,4 +1,4 @@
|
||||
error[E0317]: if may be missing an else clause
|
||||
error[E0317]: `if` may be missing an `else` clause
|
||||
--> $DIR/if-without-else-as-fn-expr.rs:2:5
|
||||
|
|
||||
LL | fn foo(bar: usize) -> usize {
|
||||
@ -11,7 +11,7 @@ LL | | }
|
||||
= note: `if` expressions without `else` evaluate to `()`
|
||||
= help: consider adding an `else` block that evaluates to the expected type
|
||||
|
||||
error[E0317]: if may be missing an else clause
|
||||
error[E0317]: `if` may be missing an `else` clause
|
||||
--> $DIR/if-without-else-as-fn-expr.rs:9:20
|
||||
|
|
||||
LL | let x: usize = if bar % 5 == 0 {
|
||||
@ -25,7 +25,7 @@ LL | | };
|
||||
= note: `if` expressions without `else` evaluate to `()`
|
||||
= help: consider adding an `else` block that evaluates to the expected type
|
||||
|
||||
error[E0317]: if may be missing an else clause
|
||||
error[E0317]: `if` may be missing an `else` clause
|
||||
--> $DIR/if-without-else-as-fn-expr.rs:17:5
|
||||
|
|
||||
LL | fn foo3(bar: usize) -> usize {
|
||||
@ -38,7 +38,7 @@ LL | | }
|
||||
= note: `if` expressions without `else` evaluate to `()`
|
||||
= help: consider adding an `else` block that evaluates to the expected type
|
||||
|
||||
error[E0317]: if may be missing an else clause
|
||||
error[E0317]: `if` may be missing an `else` clause
|
||||
--> $DIR/if-without-else-as-fn-expr.rs:24:5
|
||||
|
|
||||
LL | fn foo_let(bar: usize) -> usize {
|
||||
@ -51,7 +51,7 @@ LL | | }
|
||||
= note: `if` expressions without `else` evaluate to `()`
|
||||
= help: consider adding an `else` block that evaluates to the expected type
|
||||
|
||||
error[E0317]: if may be missing an else clause
|
||||
error[E0317]: `if` may be missing an `else` clause
|
||||
--> $DIR/if-without-else-as-fn-expr.rs:31:20
|
||||
|
|
||||
LL | let x: usize = if let 0 = 1 {
|
||||
@ -65,7 +65,7 @@ LL | | };
|
||||
= note: `if` expressions without `else` evaluate to `()`
|
||||
= help: consider adding an `else` block that evaluates to the expected type
|
||||
|
||||
error[E0317]: if may be missing an else clause
|
||||
error[E0317]: `if` may be missing an `else` clause
|
||||
--> $DIR/if-without-else-as-fn-expr.rs:39:5
|
||||
|
|
||||
LL | fn foo3_let(bar: usize) -> usize {
|
||||
|
@ -1,6 +1,6 @@
|
||||
fn main() {
|
||||
let a = if true { true };
|
||||
//~^ ERROR if may be missing an else clause [E0317]
|
||||
//~^ ERROR `if` may be missing an `else` clause [E0317]
|
||||
//~| expected `()`, found `bool`
|
||||
println!("{}", a);
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
error[E0317]: if may be missing an else clause
|
||||
error[E0317]: `if` may be missing an `else` clause
|
||||
--> $DIR/if-without-else-result.rs:2:13
|
||||
|
|
||||
LL | let a = if true { true };
|
||||
|
@ -6,7 +6,7 @@ fn main() {
|
||||
Some(2) => true,
|
||||
//~^ NOTE this is found to be of type `bool`
|
||||
None => (),
|
||||
//~^ ERROR match arms have incompatible types
|
||||
//~^ ERROR `match` arms have incompatible types
|
||||
//~| NOTE expected `bool`, found `()`
|
||||
_ => true
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
error[E0308]: match arms have incompatible types
|
||||
error[E0308]: `match` arms have incompatible types
|
||||
--> $DIR/issue-11319.rs:8:20
|
||||
|
|
||||
LL | / match Some(10) {
|
||||
|
@ -1,4 +1,4 @@
|
||||
error[E0308]: match arms have incompatible types
|
||||
error[E0308]: `match` arms have incompatible types
|
||||
--> $DIR/issue-17728.rs:109:14
|
||||
|
|
||||
LL | / match to_parse {
|
||||
|
@ -108,7 +108,7 @@ fn str_to_direction(to_parse: &str) -> RoomDirection {
|
||||
"down" => RoomDirection::Down,
|
||||
_ => None
|
||||
}
|
||||
//~^^ ERROR match arms have incompatible types
|
||||
//~^^ ERROR `match` arms have incompatible types
|
||||
}
|
||||
|
||||
fn main() {
|
||||
|
@ -9,7 +9,7 @@ LL | fn attemptTraverse(&self, room: &Room, directionStr: &str) -> Result<&R
|
||||
LL | Some(entry) => Ok(entry),
|
||||
| ^^^^^^^^^ ...but data from `room` is returned here
|
||||
|
||||
error[E0308]: match arms have incompatible types
|
||||
error[E0308]: `match` arms have incompatible types
|
||||
--> $DIR/issue-17728.rs:109:14
|
||||
|
|
||||
LL | / match to_parse {
|
||||
|
@ -1,8 +1,8 @@
|
||||
// Test if the sugared if-let construct correctly prints "missing an else clause" when an else
|
||||
// clause does not exist, instead of the unsympathetic "match arms have incompatible types"
|
||||
// clause does not exist, instead of the unsympathetic "`match` arms have incompatible types"
|
||||
|
||||
fn main() {
|
||||
if let Some(homura) = Some("madoka") { //~ ERROR missing an else clause
|
||||
if let Some(homura) = Some("madoka") { //~ ERROR missing an `else` clause
|
||||
//~| expected `()`, found integer
|
||||
765
|
||||
};
|
||||
|
@ -1,4 +1,4 @@
|
||||
error[E0317]: if may be missing an else clause
|
||||
error[E0317]: `if` may be missing an `else` clause
|
||||
--> $DIR/issue-19991.rs:5:5
|
||||
|
|
||||
LL | / if let Some(homura) = Some("madoka") {
|
||||
|
@ -10,7 +10,7 @@ fn closure_from_match() {
|
||||
2 => |c| c - 1,
|
||||
_ => |c| c - 1
|
||||
};
|
||||
//~^^^ ERROR match arms have incompatible types
|
||||
//~^^^ ERROR `match` arms have incompatible types
|
||||
}
|
||||
|
||||
fn main() { }
|
||||
|
@ -9,7 +9,7 @@ LL | x = |c| c + 1;
|
||||
= note: no two closures, even if identical, have the same type
|
||||
= help: consider boxing your closure and/or using it as a trait object
|
||||
|
||||
error[E0308]: match arms have incompatible types
|
||||
error[E0308]: `match` arms have incompatible types
|
||||
--> $DIR/issue-24036.rs:10:14
|
||||
|
|
||||
LL | let x = match 1usize {
|
||||
|
@ -2,7 +2,7 @@ fn main() {
|
||||
let a = if true {
|
||||
0
|
||||
} else if false {
|
||||
//~^ ERROR if may be missing an else clause
|
||||
//~^ ERROR `if` may be missing an `else` clause
|
||||
//~| expected `()`, found integer
|
||||
1
|
||||
};
|
||||
|
@ -1,4 +1,4 @@
|
||||
error[E0317]: if may be missing an else clause
|
||||
error[E0317]: `if` may be missing an `else` clause
|
||||
--> $DIR/issue-4201.rs:4:12
|
||||
|
|
||||
LL | } else if false {
|
||||
|
@ -2,6 +2,6 @@
|
||||
|
||||
#[start]
|
||||
fn start(argc: isize, argv: *const *const u8, crate_map: *const u8) -> isize {
|
||||
//~^ start function has wrong type
|
||||
//~^ `#[start]` function has wrong type
|
||||
0
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
error[E0308]: start function has wrong type
|
||||
error[E0308]: `#[start]` function has wrong type
|
||||
--> $DIR/issue-9575.rs:4:1
|
||||
|
|
||||
LL | fn start(argc: isize, argv: *const *const u8, crate_map: *const u8) -> isize {
|
||||
|
@ -13,7 +13,7 @@ fn foo(
|
||||
) {
|
||||
let z = match 22 {
|
||||
0 => x,
|
||||
_ => y, //~ ERROR match arms have incompatible types
|
||||
_ => y, //~ ERROR `match` arms have incompatible types
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
error[E0308]: match arms have incompatible types
|
||||
error[E0308]: `match` arms have incompatible types
|
||||
--> $DIR/old-lub-glb-hr.rs:16:14
|
||||
|
|
||||
LL | let z = match 22 {
|
||||
|
@ -9,7 +9,7 @@ fn foo(
|
||||
) {
|
||||
let z = match 22 {
|
||||
0 => x,
|
||||
_ => y, //~ ERROR match arms have incompatible types
|
||||
_ => y, //~ ERROR `match` arms have incompatible types
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
error[E0308]: match arms have incompatible types
|
||||
error[E0308]: `match` arms have incompatible types
|
||||
--> $DIR/old-lub-glb-object.rs:12:14
|
||||
|
|
||||
LL | let z = match 22 {
|
||||
|
@ -4,5 +4,5 @@ struct S {
|
||||
}
|
||||
|
||||
fn main(foo: S) {
|
||||
//~^ ERROR: main function has wrong type [E0580]
|
||||
//~^ ERROR: `main` function has wrong type [E0580]
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
error[E0580]: main function has wrong type
|
||||
error[E0580]: `main` function has wrong type
|
||||
--> $DIR/main-wrong-type.rs:6:1
|
||||
|
|
||||
LL | fn main(foo: S) {
|
||||
|
@ -14,6 +14,6 @@ fn main() {
|
||||
E::C => 3,
|
||||
E::D => 4,
|
||||
E::E => unimplemented!(""),
|
||||
E::F => "", //~ ERROR match arms have incompatible types
|
||||
E::F => "", //~ ERROR `match` arms have incompatible types
|
||||
};
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
error[E0308]: match arms have incompatible types
|
||||
error[E0308]: `match` arms have incompatible types
|
||||
--> $DIR/match-arm-resolving-to-never.rs:17:17
|
||||
|
|
||||
LL | / match E::F {
|
||||
|
@ -16,7 +16,7 @@ fn test_func2(n: i32) -> i32 {
|
||||
let x = match n { //~ NOTE `match` arms have incompatible types
|
||||
12 => 'b', //~ NOTE this is found to be of type `char`
|
||||
_ => 42,
|
||||
//~^ ERROR match arms have incompatible types
|
||||
//~^ ERROR `match` arms have incompatible types
|
||||
//~| NOTE expected `char`, found integer
|
||||
};
|
||||
x
|
||||
@ -32,7 +32,7 @@ fn test_func3(n: i32) -> i32 {
|
||||
6 => 'b',
|
||||
//~^ NOTE this and all prior arms are found to be of type `char`
|
||||
_ => 42,
|
||||
//~^ ERROR match arms have incompatible types
|
||||
//~^ ERROR `match` arms have incompatible types
|
||||
//~| NOTE expected `char`, found integer
|
||||
};
|
||||
x
|
||||
@ -44,7 +44,7 @@ fn test_func4() {
|
||||
x //~ NOTE this is found to be of type `u32`
|
||||
},
|
||||
None => {}
|
||||
//~^ ERROR match arms have incompatible types
|
||||
//~^ ERROR `match` arms have incompatible types
|
||||
//~| NOTE expected `u32`, found `()`
|
||||
};
|
||||
}
|
||||
|
@ -7,7 +7,7 @@ LL | match n {
|
||||
LL | 12 => 'b',
|
||||
| ^^^ expected `i32`, found `char`
|
||||
|
||||
error[E0308]: match arms have incompatible types
|
||||
error[E0308]: `match` arms have incompatible types
|
||||
--> $DIR/match-type-err-first-arm.rs:18:14
|
||||
|
|
||||
LL | let x = match n {
|
||||
@ -21,7 +21,7 @@ LL | |
|
||||
LL | | };
|
||||
| |_____- `match` arms have incompatible types
|
||||
|
||||
error[E0308]: match arms have incompatible types
|
||||
error[E0308]: `match` arms have incompatible types
|
||||
--> $DIR/match-type-err-first-arm.rs:34:14
|
||||
|
|
||||
LL | let x = match n {
|
||||
@ -40,7 +40,7 @@ LL | |
|
||||
LL | | };
|
||||
| |_____- `match` arms have incompatible types
|
||||
|
||||
error[E0308]: match arms have incompatible types
|
||||
error[E0308]: `match` arms have incompatible types
|
||||
--> $DIR/match-type-err-first-arm.rs:46:17
|
||||
|
|
||||
LL | / match Some(0u32) {
|
||||
|
@ -29,7 +29,7 @@ fn qux() -> impl std::fmt::Display {
|
||||
0i32
|
||||
} else {
|
||||
1u32
|
||||
//~^ ERROR if and else have incompatible types
|
||||
//~^ ERROR `if` and `else` have incompatible types
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -34,7 +34,7 @@ LL | } else {
|
||||
LL | 1u32
|
||||
| ^^^^ expected `i32`, found `u32`
|
||||
|
||||
error[E0308]: if and else have incompatible types
|
||||
error[E0308]: `if` and `else` have incompatible types
|
||||
--> $DIR/point-to-type-err-cause-on-impl-trait-return.rs:31:9
|
||||
|
|
||||
LL | / if false {
|
||||
@ -45,7 +45,7 @@ LL | | 1u32
|
||||
| | ^^^^ expected `i32`, found `u32`
|
||||
LL | |
|
||||
LL | | }
|
||||
| |_____- if and else have incompatible types
|
||||
| |_____- `if` and `else` have incompatible types
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/point-to-type-err-cause-on-impl-trait-return.rs:39:14
|
||||
|
@ -1,4 +1,4 @@
|
||||
error[E0308]: if and else have incompatible types
|
||||
error[E0308]: `if` and `else` have incompatible types
|
||||
--> $DIR/region-invariant-static-error-reporting.rs:17:9
|
||||
|
|
||||
LL | let bad = if x.is_some() {
|
||||
@ -9,7 +9,7 @@ LL | | } else {
|
||||
LL | | mk_static()
|
||||
| | ^^^^^^^^^^^ lifetime mismatch
|
||||
LL | | };
|
||||
| |_____- if and else have incompatible types
|
||||
| |_____- `if` and `else` have incompatible types
|
||||
|
|
||||
= note: expected struct `Invariant<'a>`
|
||||
found struct `Invariant<'static>`
|
||||
|
@ -1,7 +1,7 @@
|
||||
fn main() {
|
||||
let s = "abc";
|
||||
let t = if true { s[..2] } else { s };
|
||||
//~^ ERROR if and else have incompatible types
|
||||
//~^ ERROR `if` and `else` have incompatible types
|
||||
let u: &str = if true { s[..2] } else { s };
|
||||
//~^ ERROR mismatched types
|
||||
let v = s[..2];
|
||||
|
@ -1,4 +1,4 @@
|
||||
error[E0308]: if and else have incompatible types
|
||||
error[E0308]: `if` and `else` have incompatible types
|
||||
--> $DIR/str-array-assignment.rs:3:37
|
||||
|
|
||||
LL | let t = if true { s[..2] } else { s };
|
||||
|
@ -17,7 +17,7 @@ async fn thing() -> Result<(), ()> {
|
||||
if true {
|
||||
thing_one()
|
||||
} else {
|
||||
thing_two() //~ ERROR if and else have incompatible types
|
||||
thing_two() //~ ERROR `if` and `else` have incompatible types
|
||||
}.await
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
error[E0308]: if and else have incompatible types
|
||||
error[E0308]: `if` and `else` have incompatible types
|
||||
--> $DIR/opaque-type-error.rs:20:9
|
||||
|
|
||||
LL | / if true {
|
||||
@ -8,7 +8,7 @@ LL | | } else {
|
||||
LL | | thing_two()
|
||||
| | ^^^^^^^^^^^ expected opaque type, found a different opaque type
|
||||
LL | | }.await
|
||||
| |_____- if and else have incompatible types
|
||||
| |_____- `if` and `else` have incompatible types
|
||||
|
|
||||
= note: expected type `impl std::future::Future` (opaque type at <$DIR/opaque-type-error.rs:8:19>)
|
||||
found opaque type `impl std::future::Future` (opaque type at <$DIR/opaque-type-error.rs:12:19>)
|
||||
|
@ -20,7 +20,7 @@ fn main() {
|
||||
// However, in #67273, we would delay the unification of this arm with the above
|
||||
// because we used the hitherto accumulated coercion as opposed to the "initial" type.
|
||||
2 => i = 1,
|
||||
//~^ ERROR match arms have incompatible types
|
||||
//~^ ERROR `match` arms have incompatible types
|
||||
|
||||
_ => (),
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
error[E0308]: match arms have incompatible types
|
||||
error[E0308]: `match` arms have incompatible types
|
||||
--> $DIR/issue-67273-assignment-match-prior-arm-bool-expected-unit.rs:22:14
|
||||
|
|
||||
LL | / match i {
|
||||
|
@ -1,4 +1,4 @@
|
||||
error[E0308]: match arms have incompatible types
|
||||
error[E0308]: `match` arms have incompatible types
|
||||
--> $DIR/wf-unsafe-trait-obj-match.rs:23:17
|
||||
|
|
||||
LL | / match opt() {
|
||||
|
Loading…
Reference in New Issue
Block a user