diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2022-10-20 07:58:58 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-10-20 07:58:58 +0200 |
| commit | e29ecb70af4551d1fb73d5cbee776613adfbf507 (patch) | |
| tree | 38b08e3cacb7cc8d1472a9218d911f6f60cd690f /src/test | |
| parent | 1f210238a0d53e3537b6a209daa2f5db7046329f (diff) | |
| parent | c5c9f748296854c522395d917bbfc819f74f3a8a (diff) | |
| download | rust-e29ecb70af4551d1fb73d5cbee776613adfbf507.tar.gz rust-e29ecb70af4551d1fb73d5cbee776613adfbf507.zip | |
Rollup merge of #103276 - compiler-errors:default-on-uninit-ice, r=TaKO8Ki
Erase regions before checking for `Default` in uninitialized binding error Fixes #103250
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/ui/borrowck/issue-103250.rs | 37 | ||||
| -rw-r--r-- | src/test/ui/borrowck/issue-103250.stderr | 17 |
2 files changed, 54 insertions, 0 deletions
diff --git a/src/test/ui/borrowck/issue-103250.rs b/src/test/ui/borrowck/issue-103250.rs new file mode 100644 index 00000000000..46565f61ca9 --- /dev/null +++ b/src/test/ui/borrowck/issue-103250.rs @@ -0,0 +1,37 @@ +// edition:2021 + +type TranslateFn = Box<dyn Fn(String, String) -> String>; + +pub struct DeviceCluster { + devices: Vec<Device>, +} + +impl DeviceCluster { + pub async fn do_something(&mut self) -> Result<String, Box<dyn std::error::Error>> { + let mut last_error: Box<dyn std::error::Error>; + + for device in &mut self.devices { + match device.do_something().await { + Ok(info) => { + return Ok(info); + } + Err(e) => {} + } + } + + Err(last_error) + //~^ ERROR used binding `last_error` isn't initialized + } +} + +pub struct Device { + translate_fn: Option<TranslateFn>, +} + +impl Device { + pub async fn do_something(&mut self) -> Result<String, Box<dyn std::error::Error>> { + Ok(String::from("")) + } +} + +fn main() {} diff --git a/src/test/ui/borrowck/issue-103250.stderr b/src/test/ui/borrowck/issue-103250.stderr new file mode 100644 index 00000000000..4a237835222 --- /dev/null +++ b/src/test/ui/borrowck/issue-103250.stderr @@ -0,0 +1,17 @@ +error[E0381]: used binding `last_error` isn't initialized + --> $DIR/issue-103250.rs:22:13 + | +LL | let mut last_error: Box<dyn std::error::Error>; + | -------------- binding declared here but left uninitialized +... +LL | Err(last_error) + | ^^^^^^^^^^ `last_error` used here but it isn't initialized + | +help: consider assigning a value + | +LL | let mut last_error: Box<dyn std::error::Error> = todo!(); + | +++++++++ + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0381`. |
