mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-30 07:14:46 +00:00
Add comments to group code together
This commit is contained in:
parent
71bb756d20
commit
55f5956175
1 changed files with 44 additions and 7 deletions
|
@ -77,6 +77,12 @@ impl<'a> CodeGenHelp<'a> {
|
|||
}
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
//
|
||||
// CALL GENERATED PROCS
|
||||
//
|
||||
// ============================================================================
|
||||
|
||||
/// Expand a `Refcounting` node to a `Let` node that calls a specialized helper proc.
|
||||
/// The helper procs themselves are to be generated later with `generate_procs`
|
||||
pub fn expand_refcount_stmt(
|
||||
|
@ -218,6 +224,13 @@ impl<'a> CodeGenHelp<'a> {
|
|||
|
||||
(expr, new_procs_info)
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
//
|
||||
// TRAVERSE LAYOUT & CREATE PROC NAMES
|
||||
//
|
||||
// ============================================================================
|
||||
|
||||
/// Find the Symbol of the procedure for this layout and operation
|
||||
/// If any new helper procs are needed for this layout or its children,
|
||||
/// return their details in a vector.
|
||||
|
@ -340,6 +353,12 @@ impl<'a> CodeGenHelp<'a> {
|
|||
Symbol::new(self.home, ident_id)
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
//
|
||||
// GENERATE PROCS
|
||||
//
|
||||
// ============================================================================
|
||||
|
||||
/// Generate refcounting helper procs, each specialized to a particular Layout.
|
||||
/// For example `List (Result { a: Str, b: Int } Str)` would get its own helper
|
||||
/// to update the refcounts on the List, the Result and the strings.
|
||||
|
@ -399,13 +418,9 @@ impl<'a> CodeGenHelp<'a> {
|
|||
eq_todo()
|
||||
}
|
||||
Layout::Struct(_) => eq_todo(),
|
||||
Layout::Union(union_layout) => match union_layout {
|
||||
UnionLayout::NonRecursive(_) => eq_todo(),
|
||||
UnionLayout::Recursive(_) => eq_todo(),
|
||||
UnionLayout::NonNullableUnwrapped(_) => eq_todo(),
|
||||
UnionLayout::NullableWrapped { .. } => eq_todo(),
|
||||
UnionLayout::NullableUnwrapped { .. } => eq_todo(),
|
||||
},
|
||||
Layout::Union(union_layout) => {
|
||||
self.eq_tag_union(ident_ids, proc_symbol, union_layout)
|
||||
}
|
||||
Layout::LambdaSet(_) => unreachable!("`==` is not defined on functions"),
|
||||
Layout::RecursivePointer => eq_todo(),
|
||||
}
|
||||
|
@ -433,6 +448,12 @@ impl<'a> CodeGenHelp<'a> {
|
|||
}
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
//
|
||||
// GENERATE REFCOUNTING
|
||||
//
|
||||
// ============================================================================
|
||||
|
||||
/// Generate a procedure to modify the reference count of a Str
|
||||
fn gen_modify_str(
|
||||
&mut self,
|
||||
|
@ -565,6 +586,22 @@ impl<'a> CodeGenHelp<'a> {
|
|||
host_exposed_layouts: HostExposedLayouts::NotHostExposed,
|
||||
}
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
//
|
||||
// GENERATE EQUALS
|
||||
//
|
||||
// ============================================================================
|
||||
|
||||
fn eq_tag_union(
|
||||
&mut self,
|
||||
ident_ids: &mut IdentIds,
|
||||
proc_name: Symbol,
|
||||
union_layout: UnionLayout<'a>,
|
||||
) -> Proc<'a> {
|
||||
//
|
||||
todo!("return something")
|
||||
}
|
||||
}
|
||||
|
||||
/// Helper to derive a debug function name from a layout
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue