mirror of
https://github.com/roc-lang/roc.git
synced 2025-08-03 19:58:18 +00:00
Add a Newtype variant to LayoutWrapper
This commit is contained in:
parent
dd94d6ba16
commit
5274dbcd00
22 changed files with 348 additions and 265 deletions
|
@ -403,7 +403,7 @@ fn build_entry_point<'a>(
|
|||
|
||||
let block = builder.add_block();
|
||||
|
||||
let struct_layout = interner.insert_no_semantic(LayoutRepr::struct_(layouts));
|
||||
let struct_layout = interner.insert_direct_no_semantic(LayoutRepr::struct_(layouts));
|
||||
let type_id = layout_spec(env, &mut builder, interner, struct_layout)?;
|
||||
|
||||
let argument = builder.add_unknown_with(block, &[], type_id)?;
|
||||
|
@ -461,7 +461,7 @@ fn proc_spec<'a>(
|
|||
|
||||
let root = BlockExpr(block, value_id);
|
||||
let args_struct_layout =
|
||||
interner.insert_no_semantic(LayoutRepr::struct_(argument_layouts.into_bump_slice()));
|
||||
interner.insert_direct_no_semantic(LayoutRepr::struct_(argument_layouts.into_bump_slice()));
|
||||
let arg_type_id = layout_spec(&mut env, &mut builder, interner, args_struct_layout)?;
|
||||
let ret_type_id = layout_spec(&mut env, &mut builder, interner, proc.ret_layout)?;
|
||||
|
||||
|
@ -851,8 +851,9 @@ fn call_spec<'a>(
|
|||
|
||||
let output_element_type = layout_spec(env, builder, interner, *return_layout)?;
|
||||
|
||||
let state_layout = interner
|
||||
.insert_no_semantic(LayoutRepr::Builtin(Builtin::List(*return_layout)));
|
||||
let state_layout = interner.insert_direct_no_semantic(LayoutRepr::Builtin(
|
||||
Builtin::List(*return_layout),
|
||||
));
|
||||
let state_type = layout_spec(env, builder, interner, state_layout)?;
|
||||
|
||||
let init_state = new_list(builder, block, output_element_type)?;
|
||||
|
@ -880,7 +881,7 @@ fn call_spec<'a>(
|
|||
let arg0_layout = argument_layouts[0];
|
||||
|
||||
let state_layout = interner
|
||||
.insert_no_semantic(LayoutRepr::Builtin(Builtin::List(arg0_layout)));
|
||||
.insert_direct_no_semantic(LayoutRepr::Builtin(Builtin::List(arg0_layout)));
|
||||
let state_type = layout_spec(env, builder, interner, state_layout)?;
|
||||
let init_state = list;
|
||||
|
||||
|
@ -907,8 +908,9 @@ fn call_spec<'a>(
|
|||
|
||||
let output_element_type = layout_spec(env, builder, interner, *return_layout)?;
|
||||
|
||||
let state_layout = interner
|
||||
.insert_no_semantic(LayoutRepr::Builtin(Builtin::List(*return_layout)));
|
||||
let state_layout = interner.insert_direct_no_semantic(LayoutRepr::Builtin(
|
||||
Builtin::List(*return_layout),
|
||||
));
|
||||
let state_type = layout_spec(env, builder, interner, state_layout)?;
|
||||
|
||||
let init_state = new_list(builder, block, output_element_type)?;
|
||||
|
@ -941,8 +943,9 @@ fn call_spec<'a>(
|
|||
|
||||
let output_element_type = layout_spec(env, builder, interner, *return_layout)?;
|
||||
|
||||
let state_layout = interner
|
||||
.insert_no_semantic(LayoutRepr::Builtin(Builtin::List(*return_layout)));
|
||||
let state_layout = interner.insert_direct_no_semantic(LayoutRepr::Builtin(
|
||||
Builtin::List(*return_layout),
|
||||
));
|
||||
let state_type = layout_spec(env, builder, interner, state_layout)?;
|
||||
|
||||
let init_state = new_list(builder, block, output_element_type)?;
|
||||
|
@ -981,8 +984,9 @@ fn call_spec<'a>(
|
|||
|
||||
let output_element_type = layout_spec(env, builder, interner, *return_layout)?;
|
||||
|
||||
let state_layout = interner
|
||||
.insert_no_semantic(LayoutRepr::Builtin(Builtin::List(*return_layout)));
|
||||
let state_layout = interner.insert_direct_no_semantic(LayoutRepr::Builtin(
|
||||
Builtin::List(*return_layout),
|
||||
));
|
||||
let state_type = layout_spec(env, builder, interner, state_layout)?;
|
||||
|
||||
let init_state = new_list(builder, block, output_element_type)?;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue