未验证 提交 817603e8 编写于 作者: A Andy Gocke 提交者: GitHub

Remove capturing lambda from binding hot path (#41055)

Capturing lambdas should be avoided in core compiler code
as they generate excess allocations

Fixes #41054
上级 a694f69d
...@@ -274,15 +274,22 @@ internal BoundExpression BindToNaturalType(BoundExpression expression, Diagnosti ...@@ -274,15 +274,22 @@ internal BoundExpression BindToNaturalType(BoundExpression expression, Diagnosti
} }
break; break;
case BoundTupleLiteral sourceTuple: case BoundTupleLiteral sourceTuple:
result = new BoundConvertedTupleLiteral( {
sourceTuple.Syntax, var boundArgs = ArrayBuilder<BoundExpression>.GetInstance(sourceTuple.Arguments.Length);
sourceTuple, foreach (var arg in sourceTuple.Arguments)
wasTargetTyped: false, {
sourceTuple.Arguments.SelectAsArray(e => BindToNaturalType(e, diagnostics, reportDefaultMissingType)), boundArgs.Add(BindToNaturalType(arg, diagnostics, reportDefaultMissingType));
sourceTuple.ArgumentNamesOpt, }
sourceTuple.InferredNamesOpt, result = new BoundConvertedTupleLiteral(
sourceTuple.Type, // same type to keep original element names sourceTuple.Syntax,
sourceTuple.HasErrors).WithSuppression(sourceTuple.IsSuppressed); sourceTuple,
wasTargetTyped: false,
boundArgs.ToImmutableAndFree(),
sourceTuple.ArgumentNamesOpt,
sourceTuple.InferredNamesOpt,
sourceTuple.Type, // same type to keep original element names
sourceTuple.HasErrors).WithSuppression(sourceTuple.IsSuppressed);
}
break; break;
case BoundDefaultLiteral defaultExpr: case BoundDefaultLiteral defaultExpr:
{ {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册