Skip to content

Commit

Permalink
add 4 ices
Browse files Browse the repository at this point in the history
  • Loading branch information
matthiaskrgr committed Jun 4, 2022
1 parent 24bd796 commit 74902b3
Show file tree
Hide file tree
Showing 4 changed files with 130 additions and 0 deletions.
27 changes: 27 additions & 0 deletions ices/97695.sh
Original file line number Diff line number Diff line change
@@ -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<T> {
fn create() -> Self;
}
pub fn oh_no<'a, T>()
where
Wrap<'a>: Associate,
<Wrap<'a> as Associate>::Associated: Create<T>,
{
<Wrap<'a> as Associate>::Associated::create();
}
pub fn main() {}
EOF
9 changes: 9 additions & 0 deletions ices/97698.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
use std::ffi::CString;

impl Lock {
pub fn new() {
if () == -1 {
CString::new();
}
}
}
24 changes: 24 additions & 0 deletions ices/97706.rs
Original file line number Diff line number Diff line change
@@ -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)
}

pub fn main() {}
70 changes: 70 additions & 0 deletions ices/97728.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
#!/bin/sh

rustc -Zmir-opt-level=3 --emit=mir - << EOF
// check-pass
#![allow(dead_code)]
trait ParseError {
type StreamError;
}
impl<T> ParseError for T {
type StreamError = ();
}
trait Stream {
type Item;
type Error: ParseError;
}
trait Parser
where
<Self as Parser>::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<A, B>(core::marker::PhantomData<(A, B)>);
impl<A, B> Parser for AndThen<A, B>
where
A: Stream,
B: Into<<A::Error as ParseError>::StreamError>,
{
type PartialState = ();
}
fn expr<A>() -> impl Parser
where
A: Stream<Error = <A as Stream>::Item>,
{
AndThen::<A, ()>(core::marker::PhantomData)
}
fn parse_mode_impl<A>()
where
<A as Stream>::Error: ParseError,
A: Stream<Error = <A as Stream>::Item>,
{
Parser::parse_mode(&expr::<A>(), Default::default())
}
fn main() {}
EOF

0 comments on commit 74902b3

Please sign in to comment.