mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-26 13:29:12 +00:00
Convert LayoutRepr::Struct into a tuple variant
This commit is contained in:
parent
a6bda6eccf
commit
a67c148be7
24 changed files with 85 additions and 128 deletions
|
@ -611,9 +611,7 @@ pub fn build_compare_wrapper<'a, 'ctx>(
|
|||
let closure_data_repr = closure_data_layout.runtime_representation();
|
||||
|
||||
let arguments_cast = match layout_interner.get(closure_data_repr).repr {
|
||||
LayoutRepr::Struct {
|
||||
field_layouts: &[], ..
|
||||
} => {
|
||||
LayoutRepr::Struct(&[]) => {
|
||||
// nothing to add
|
||||
&default
|
||||
}
|
||||
|
|
|
@ -1332,7 +1332,7 @@ pub fn build_exp_expr<'a, 'ctx>(
|
|||
|
||||
// extract field from a record
|
||||
match (value, layout_interner.get(layout).repr) {
|
||||
(StructValue(argument), LayoutRepr::Struct { field_layouts, .. }) => {
|
||||
(StructValue(argument), LayoutRepr::Struct(field_layouts)) => {
|
||||
debug_assert!(!field_layouts.is_empty());
|
||||
|
||||
let field_value = env
|
||||
|
|
|
@ -165,7 +165,7 @@ fn build_eq<'a, 'ctx>(
|
|||
&builtin,
|
||||
),
|
||||
|
||||
LayoutRepr::Struct { field_layouts, .. } => build_struct_eq(
|
||||
LayoutRepr::Struct(field_layouts) => build_struct_eq(
|
||||
env,
|
||||
layout_interner,
|
||||
layout_ids,
|
||||
|
@ -353,7 +353,7 @@ fn build_neq<'a, 'ctx>(
|
|||
&builtin,
|
||||
),
|
||||
|
||||
LayoutRepr::Struct { field_layouts, .. } => {
|
||||
LayoutRepr::Struct(field_layouts) => {
|
||||
let is_equal = build_struct_eq(
|
||||
env,
|
||||
layout_interner,
|
||||
|
|
|
@ -37,10 +37,7 @@ pub fn basic_type_from_layout<'a, 'ctx, 'env>(
|
|||
use LayoutRepr::*;
|
||||
|
||||
match layout_interner.get(layout).repr {
|
||||
Struct {
|
||||
field_layouts: sorted_fields,
|
||||
..
|
||||
} => basic_type_from_record(env, layout_interner, sorted_fields),
|
||||
Struct(sorted_fields, ..) => basic_type_from_record(env, layout_interner, sorted_fields),
|
||||
LambdaSet(lambda_set) => {
|
||||
basic_type_from_layout(env, layout_interner, lambda_set.runtime_representation())
|
||||
}
|
||||
|
|
|
@ -307,7 +307,7 @@ fn build_clone<'a, 'ctx>(
|
|||
builtin,
|
||||
),
|
||||
|
||||
LayoutRepr::Struct { field_layouts, .. } => build_clone_struct(
|
||||
LayoutRepr::Struct(field_layouts) => build_clone_struct(
|
||||
env,
|
||||
layout_interner,
|
||||
layout_ids,
|
||||
|
|
|
@ -197,7 +197,7 @@ pub(crate) fn run_low_level<'a, 'ctx>(
|
|||
arguments!(string);
|
||||
|
||||
let number_layout = match layout_interner.get(layout).repr {
|
||||
LayoutRepr::Struct { field_layouts, .. } => field_layouts[0], // TODO: why is it sometimes a struct?
|
||||
LayoutRepr::Struct(field_layouts) => field_layouts[0], // TODO: why is it sometimes a struct?
|
||||
_ => unreachable!(),
|
||||
};
|
||||
|
||||
|
@ -2013,7 +2013,7 @@ fn build_int_unary_op<'a, 'ctx, 'env>(
|
|||
// return_layout : Result N [OutOfBounds]* ~ { result: N, out_of_bounds: bool }
|
||||
|
||||
let target_int_width = match layout_interner.get(return_layout).repr {
|
||||
LayoutRepr::Struct { field_layouts, .. } if field_layouts.len() == 2 => {
|
||||
LayoutRepr::Struct(field_layouts) if field_layouts.len() == 2 => {
|
||||
debug_assert!(layout_interner.eq_repr(field_layouts[1], Layout::BOOL));
|
||||
field_layouts[0].to_int_width()
|
||||
}
|
||||
|
|
|
@ -562,7 +562,7 @@ fn modify_refcount_layout_build_function<'a, 'ctx>(
|
|||
}
|
||||
}
|
||||
|
||||
Struct { field_layouts, .. } => {
|
||||
Struct(field_layouts) => {
|
||||
let function =
|
||||
modify_refcount_struct(env, layout_interner, layout_ids, field_layouts, mode);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue