diff --git a/fixed/97695.sh b/fixed/97695.sh new file mode 100755 index 00000000..4389b232 --- /dev/null +++ b/fixed/97695.sh @@ -0,0 +1,27 @@ +#!/bin/sh + +rustc -Zmir-opt-level=3 --emit=mir - << EOF + +pub trait Associate { + type Associated; +} + +pub struct Wrap<'a> { + pub field: &'a i32, +} + +pub trait Create { + fn create() -> Self; +} + +pub fn oh_no<'a, T>() +where + Wrap<'a>: Associate, + as Associate>::Associated: Create, +{ + as Associate>::Associated::create(); +} + +fn main() {} + +EOF diff --git a/ices/97698.rs b/ices/97698.rs new file mode 100644 index 00000000..ca900894 --- /dev/null +++ b/ices/97698.rs @@ -0,0 +1,11 @@ +use std::ffi::CString; + +impl Lock { + pub fn new() { + if () == -1 { + CString::new(); + } + } +} + +fn main() {} diff --git a/ices/97706.rs b/ices/97706.rs new file mode 100644 index 00000000..eae8b91b --- /dev/null +++ b/ices/97706.rs @@ -0,0 +1,24 @@ +pub fn compose( + f1: impl FnOnce(f64) -> f64 + Clone, + f2: impl FnOnce(f64) -> f64 + Clone, +) -> impl FnOnce(f64) -> f64 + Clone { + move |x| f1(f2(x)) +} + +pub fn double(f: impl FnOnce(f64) -> f64 + Clone) -> impl FnOnce(f64) -> f64 + Clone { + compose(f.clone(), f) +} + + +fn repeat_helper(f: impl FnOnce(f64) -> f64 + Clone, res: impl FnOnce(f64) -> f64 + Clone, times: usize) -> impl FnOnce(f64) -> f64 + Clone { + if times == 1 { + return res; + } + repeat_helper(f.clone(), compose(f, res), times - 1) +} + +pub fn repeat(f: impl FnOnce(f64) -> f64 + Clone, times: usize) -> impl FnOnce(f64) -> f64 + Clone { + repeat_helper(f.clone(), f, times) +} + +fn main() {} diff --git a/ices/97728.sh b/ices/97728.sh new file mode 100644 index 00000000..ddeef28a --- /dev/null +++ b/ices/97728.sh @@ -0,0 +1,67 @@ +#!/bin/sh + +rustc -Zmir-opt-level=3 --emit=mir - << EOF +// check-pass + +#![allow(dead_code)] + +trait ParseError { + type StreamError; +} + +impl ParseError for T { + type StreamError = (); +} + +trait Stream { + type Item; + type Error: ParseError; +} + +trait Parser +where + ::PartialState: Default, +{ + type PartialState; + fn parse_mode(_: &Self, _: Self::PartialState) { + loop {} + } +} + +impl Stream for () { + type Item = (); + type Error = (); +} + +impl Parser for () { + type PartialState = (); +} + +struct AndThen(core::marker::PhantomData<(A, B)>); + +impl Parser for AndThen +where + A: Stream, + B: Into<::StreamError>, +{ + type PartialState = (); +} + +fn expr() -> impl Parser +where + A: Stream::Item>, +{ + AndThen::(core::marker::PhantomData) +} + +fn parse_mode_impl() +where + ::Error: ParseError, + A: Stream::Item>, +{ + Parser::parse_mode(&expr::(), Default::default()) +} + +fn main() {} + +EOF