# Async closure fn f() { let _ = async || {}; } ==> SourceFile( FunctionItem( fn, BoundIdentifier, ParamList, Block(LetDeclaration(let, _, ClosureExpression(async, ParamList, Block))))) # Async move closure fn f() { let value = 1; let _ = async move || value; } ==> SourceFile( FunctionItem( fn, BoundIdentifier, ParamList, Block( LetDeclaration(let, BoundIdentifier, Integer), LetDeclaration(let, _, ClosureExpression(async, move, ParamList, Identifier))))) # Async closure with typed parameters and return type fn f() { let _ = async |value: u8| -> u8 { value }; } ==> SourceFile( FunctionItem( fn, BoundIdentifier, ParamList, Block( LetDeclaration( let, _, ClosureExpression( async, ParamList(Parameter(BoundIdentifier, TypeIdentifier)), TypeIdentifier, Block(ExpressionStatement(Identifier)))))))