diff --git a/src/Compilers/CSharp/Portable/Binder/Binder_Expressions.cs b/src/Compilers/CSharp/Portable/Binder/Binder_Expressions.cs index ce1bc9413ca1eb25291d14dd51d16f372406b304..fdd8adeffd4b137ccd835606d6d67c1c19993f52 100644 --- a/src/Compilers/CSharp/Portable/Binder/Binder_Expressions.cs +++ b/src/Compilers/CSharp/Portable/Binder/Binder_Expressions.cs @@ -274,15 +274,22 @@ internal BoundExpression BindToNaturalType(BoundExpression expression, Diagnosti } break; case BoundTupleLiteral sourceTuple: - result = new BoundConvertedTupleLiteral( - sourceTuple.Syntax, - sourceTuple, - wasTargetTyped: false, - sourceTuple.Arguments.SelectAsArray(e => BindToNaturalType(e, diagnostics, reportDefaultMissingType)), - sourceTuple.ArgumentNamesOpt, - sourceTuple.InferredNamesOpt, - sourceTuple.Type, // same type to keep original element names - sourceTuple.HasErrors).WithSuppression(sourceTuple.IsSuppressed); + { + var boundArgs = ArrayBuilder.GetInstance(sourceTuple.Arguments.Length); + foreach (var arg in sourceTuple.Arguments) + { + boundArgs.Add(BindToNaturalType(arg, diagnostics, reportDefaultMissingType)); + } + result = new BoundConvertedTupleLiteral( + sourceTuple.Syntax, + sourceTuple, + wasTargetTyped: false, + boundArgs.ToImmutableAndFree(), + sourceTuple.ArgumentNamesOpt, + sourceTuple.InferredNamesOpt, + sourceTuple.Type, // same type to keep original element names + sourceTuple.HasErrors).WithSuppression(sourceTuple.IsSuppressed); + } break; case BoundDefaultLiteral defaultExpr: {