Don't pass empty captures

This commit is contained in:
Ayaz Hafiz 2023-07-06 15:45:49 -05:00
parent 13c45151a4
commit fcb907b0c9
No known key found for this signature in database
GPG key ID: 0E2A37416A25EF58
3 changed files with 13 additions and 9 deletions

View file

@ -5287,9 +5287,13 @@ pub fn with_hole<'a>(
unreachable!("a closure syntactically always must have at least one argument")
}
RawFunctionLayout::ErasedFunction(argument_layouts, ret_layout) => {
let captured_symbols = Vec::from_iter_in(captured_symbols, env.arena);
let captured_symbols = captured_symbols.into_bump_slice();
let captured_symbols = CapturedSymbols::Captured(captured_symbols);
let captured_symbols = if captured_symbols.is_empty() {
CapturedSymbols::None
} else {
let captured_symbols = Vec::from_iter_in(captured_symbols, env.arena);
let captured_symbols = captured_symbols.into_bump_slice();
CapturedSymbols::Captured(captured_symbols)
};
let resolved_erased_lambda = ResolvedErasedLambda::new(
env,
layout_cache,

View file

@ -368,11 +368,13 @@ pub fn build_erased_function<'a>(
}
}
#[derive(Debug)]
struct ResolvedErasedCaptures<'a> {
layouts: &'a [InLayout<'a>],
symbols: &'a [Symbol],
}
#[derive(Debug)]
pub struct ResolvedErasedLambda<'a> {
captures: Option<ResolvedErasedCaptures<'a>>,
lambda_name: LambdaName<'a>,