Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 26 additions & 28 deletions expand/src/bin/example1.expanded.rs
Original file line number Diff line number Diff line change
@@ -1,23 +1,18 @@
#![feature(prelude_import)]
#[prelude_import]
use std::prelude::rust_2021::*;
#[macro_use]
extern crate std;
#[prelude_import]
use std::prelude::rust_2021::*;
#[repr(transparent)]
struct Iterator1 {
#[doc(hidden)]
__private_inner: ::stacklover::__private_mod::ErasedStorage<
{ Iterator1::__SIZE },
{ Iterator1::__ALIGN },
>,
__private_inner:
::stacklover::__private_mod::ErasedStorage<{ Iterator1::__SIZE }, { Iterator1::__ALIGN }>,
}
const _: () = {
type __StackloverWrappedType<__Inner__> = __Inner__;
#[inline(always)]
fn __stacklover_create(
dep1: &'static str,
dep2: i32,
) -> impl Iterator<Item = i32> + Clone {
fn __stacklover_create(dep1: &'static str, dep2: i32) -> impl Iterator<Item = i32> + Clone {
(1..)
.map(|x| x * 3)
.take_while(|x| *x < 20)
Expand All @@ -38,15 +33,15 @@ const _: () = {
let inner_to_struct = __stacklover_inner_to_struct_fn_unreachable;
inner_to_struct(created_value)
};
fn __stacklover_fn_param_unreachable<T, R>(_: impl Fn(T) -> R) -> T {
const fn __stacklover_fn_param_unreachable<T, R>(_: impl Fn(T) -> R) -> T {
::core::panicking::panic("internal error: entered unreachable code")
}
__stacklover_fn_param_unreachable(__stacklover_inner_to_struct_fn_unreachable)
}
impl Iterator1 {
#[inline(always)]
pub fn new(dep1: &'static str, dep2: i32) -> __StackloverWrappedType<Self> {
let __stacklover_inner_to_struct_fn = |inner| Self {
let __stacklover_inner_to_struct_fn = |inner| Iterator1 {
__private_inner: unsafe {
::core::mem::transmute::<
_,
Expand All @@ -57,24 +52,30 @@ const _: () = {
>(inner)
},
};
let inner_to_struct = __stacklover_inner_to_struct_fn;
{
let created_value = __stacklover_create(dep1, dep2);
let inner_to_struct = __stacklover_inner_to_struct_fn;
inner_to_struct(created_value)
}
}
}
const _: () = {
if !(::core::mem::size_of::<Iterator1>() == Iterator1::__SIZE) {
{
::core::panicking::panic_fmt(format_args!("invalid size"));
{
match ::core::mem::size_of::<Iterator1>() == Iterator1::__SIZE {
true => {}
_ => {
::core::panicking::panic_fmt(format_args!("invalid size"));
}
}
}
if !(::core::mem::align_of::<Iterator1>() == Iterator1::__ALIGN) {
{
::core::panicking::panic_fmt(format_args!("invalid align"));
};
{
match ::core::mem::align_of::<Iterator1>() == Iterator1::__ALIGN {
true => {}
_ => {
::core::panicking::panic_fmt(format_args!("invalid align"));
}
}
}
};
};
const _: fn() = || {
fn assert_static<T: 'static>(_: T) {}
Expand All @@ -83,18 +84,14 @@ const _: () = {
impl Iterator1 {
#[doc(hidden)]
const __SIZE: usize = {
const fn size_of_return_value<R>(
_: &(impl ::core::ops::Fn() -> R),
) -> usize {
const fn size_of_return_value<R>(_: &(impl ::core::ops::Fn() -> R)) -> usize {
::core::mem::size_of::<R>()
}
size_of_return_value(&__stacklover_inner_unreachable)
};
#[doc(hidden)]
const __ALIGN: usize = {
const fn align_of_return_value<R>(
_: &(impl ::core::ops::Fn() -> R),
) -> usize {
const fn align_of_return_value<R>(_: &(impl ::core::ops::Fn() -> R)) -> usize {
::core::mem::align_of::<R>()
}
align_of_return_value(&__stacklover_inner_unreachable)
Expand Down Expand Up @@ -144,7 +141,8 @@ const _: () = {
if true {
unsafe { ::core::mem::transmute(self) }
} else {
#[allow(unreachable_code)] __stacklover_inner_unreachable()
#[allow(unreachable_code)]
__stacklover_inner_unreachable()
}
}
#[inline(always)]
Expand Down
65 changes: 30 additions & 35 deletions expand/src/bin/example2.expanded.rs
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
#![feature(prelude_import)]
#[prelude_import]
use std::prelude::rust_2021::*;
#[macro_use]
extern crate std;
#[prelude_import]
use std::prelude::rust_2021::*;
#[repr(transparent)]
struct Iterator1 {
#[doc(hidden)]
__private_inner: ::stacklover::__private_mod::ErasedStorage<
{ Iterator1::__SIZE },
{ Iterator1::__ALIGN },
>,
__private_inner:
::stacklover::__private_mod::ErasedStorage<{ Iterator1::__SIZE }, { Iterator1::__ALIGN }>,
}
const _: () = {
type __StackloverWrappedType<__Inner__> = __Inner__;
Expand All @@ -27,22 +25,19 @@ const _: () = {
#[allow(unused)]
#[allow(unreachable_code)]
fn __stacklover_inner_unreachable() -> impl Iterator<Item = i32> + Clone {
fn __stacklover_await_future_unreachable<
T: ::core::future::Future<Output = O>,
O,
>(_: T) -> O {
fn __stacklover_await_future_unreachable<T: ::core::future::Future<Output = O>, O>(
_: T,
) -> O {
::core::panicking::panic("internal error: entered unreachable code")
}
let __stacklover_inner_to_struct_fn_unreachable = |inner| -> Iterator1 {
::core::panicking::panic("internal error: entered unreachable code")
};
let _ = {
let created_value = __stacklover_await_future_unreachable(
__stacklover_create(
::core::panicking::panic("internal error: entered unreachable code"),
::core::panicking::panic("internal error: entered unreachable code"),
),
);
let created_value = __stacklover_await_future_unreachable(__stacklover_create(
::core::panicking::panic("internal error: entered unreachable code"),
::core::panicking::panic("internal error: entered unreachable code"),
));
let inner_to_struct = __stacklover_inner_to_struct_fn_unreachable;
inner_to_struct(created_value)
};
Expand All @@ -53,10 +48,7 @@ const _: () = {
}
impl Iterator1 {
#[inline(always)]
pub async fn new(
dep1: &'static str,
dep2: i32,
) -> __StackloverWrappedType<Self> {
pub async fn new(dep1: &'static str, dep2: i32) -> __StackloverWrappedType<Self> {
let __stacklover_inner_to_struct_fn = |inner| Self {
__private_inner: unsafe {
::core::mem::transmute::<
Expand All @@ -76,16 +68,22 @@ const _: () = {
}
}
const _: () = {
if !(::core::mem::size_of::<Iterator1>() == Iterator1::__SIZE) {
{
::core::panicking::panic_fmt(format_args!("invalid size"));
{
match ::core::mem::size_of::<Iterator1>() == Iterator1::__SIZE {
true => {}
_ => {
::core::panicking::panic_fmt(format_args!("invalid size"));
}
}
}
if !(::core::mem::align_of::<Iterator1>() == Iterator1::__ALIGN) {
{
::core::panicking::panic_fmt(format_args!("invalid align"));
};
{
match ::core::mem::align_of::<Iterator1>() == Iterator1::__ALIGN {
true => {}
_ => {
::core::panicking::panic_fmt(format_args!("invalid align"));
}
}
}
};
};
const _: fn() = || {
fn assert_static<T: 'static>(_: T) {}
Expand All @@ -94,18 +92,14 @@ const _: () = {
impl Iterator1 {
#[doc(hidden)]
const __SIZE: usize = {
const fn size_of_return_value<R>(
_: &(impl ::core::ops::Fn() -> R),
) -> usize {
const fn size_of_return_value<R>(_: &(impl ::core::ops::Fn() -> R)) -> usize {
::core::mem::size_of::<R>()
}
size_of_return_value(&__stacklover_inner_unreachable)
};
#[doc(hidden)]
const __ALIGN: usize = {
const fn align_of_return_value<R>(
_: &(impl ::core::ops::Fn() -> R),
) -> usize {
const fn align_of_return_value<R>(_: &(impl ::core::ops::Fn() -> R)) -> usize {
::core::mem::align_of::<R>()
}
align_of_return_value(&__stacklover_inner_unreachable)
Expand Down Expand Up @@ -155,7 +149,8 @@ const _: () = {
if true {
unsafe { ::core::mem::transmute(self) }
} else {
#[allow(unreachable_code)] __stacklover_inner_unreachable()
#[allow(unreachable_code)]
__stacklover_inner_unreachable()
}
}
#[inline(always)]
Expand Down
49 changes: 25 additions & 24 deletions expand/src/bin/example3.expanded.rs
Original file line number Diff line number Diff line change
@@ -1,16 +1,14 @@
#![feature(prelude_import)]
#[prelude_import]
use std::prelude::rust_2021::*;
#[macro_use]
extern crate std;
#[prelude_import]
use std::prelude::rust_2021::*;
use stacklover::define_struct;
#[repr(transparent)]
struct Iterator1 {
#[doc(hidden)]
__private_inner: ::stacklover::__private_mod::ErasedStorage<
{ Iterator1::__SIZE },
{ Iterator1::__ALIGN },
>,
__private_inner:
::stacklover::__private_mod::ErasedStorage<{ Iterator1::__SIZE }, { Iterator1::__ALIGN }>,
}
const _: () = {
type __StackloverWrappedType<__Inner__> = Result<__Inner__, std::io::Error>;
Expand Down Expand Up @@ -40,15 +38,15 @@ const _: () = {
let inner_to_struct = __stacklover_inner_to_struct_fn_unreachable;
result.map(|inner| inner_to_struct(inner))
};
fn __stacklover_fn_param_unreachable<T, R>(_: impl Fn(T) -> R) -> T {
const fn __stacklover_fn_param_unreachable<T, R>(_: impl Fn(T) -> R) -> T {
::core::panicking::panic("internal error: entered unreachable code")
}
__stacklover_fn_param_unreachable(__stacklover_inner_to_struct_fn_unreachable)
}
impl Iterator1 {
#[inline(always)]
pub fn new(dep1: &'static str, dep2: i32) -> __StackloverWrappedType<Self> {
let __stacklover_inner_to_struct_fn = |inner| Self {
let __stacklover_inner_to_struct_fn = |inner| Iterator1 {
__private_inner: unsafe {
::core::mem::transmute::<
_,
Expand All @@ -59,24 +57,30 @@ const _: () = {
>(inner)
},
};
let inner_to_struct = __stacklover_inner_to_struct_fn;
{
let result = __stacklover_create(dep1, dep2);
let inner_to_struct = __stacklover_inner_to_struct_fn;
result.map(|inner| inner_to_struct(inner))
}
}
}
const _: () = {
if !(::core::mem::size_of::<Iterator1>() == Iterator1::__SIZE) {
{
::core::panicking::panic_fmt(format_args!("invalid size"));
{
match ::core::mem::size_of::<Iterator1>() == Iterator1::__SIZE {
true => {}
_ => {
::core::panicking::panic_fmt(format_args!("invalid size"));
}
}
}
if !(::core::mem::align_of::<Iterator1>() == Iterator1::__ALIGN) {
{
::core::panicking::panic_fmt(format_args!("invalid align"));
};
{
match ::core::mem::align_of::<Iterator1>() == Iterator1::__ALIGN {
true => {}
_ => {
::core::panicking::panic_fmt(format_args!("invalid align"));
}
}
}
};
};
const _: fn() = || {
fn assert_static<T: 'static>(_: T) {}
Expand All @@ -85,18 +89,14 @@ const _: () = {
impl Iterator1 {
#[doc(hidden)]
const __SIZE: usize = {
const fn size_of_return_value<R>(
_: &(impl ::core::ops::Fn() -> R),
) -> usize {
const fn size_of_return_value<R>(_: &(impl ::core::ops::Fn() -> R)) -> usize {
::core::mem::size_of::<R>()
}
size_of_return_value(&__stacklover_inner_unreachable)
};
#[doc(hidden)]
const __ALIGN: usize = {
const fn align_of_return_value<R>(
_: &(impl ::core::ops::Fn() -> R),
) -> usize {
const fn align_of_return_value<R>(_: &(impl ::core::ops::Fn() -> R)) -> usize {
::core::mem::align_of::<R>()
}
align_of_return_value(&__stacklover_inner_unreachable)
Expand Down Expand Up @@ -146,7 +146,8 @@ const _: () = {
if true {
unsafe { ::core::mem::transmute(self) }
} else {
#[allow(unreachable_code)] __stacklover_inner_unreachable()
#[allow(unreachable_code)]
__stacklover_inner_unreachable()
}
}
#[inline(always)]
Expand Down
Loading