**Version Used**: https://github.com/dotnet/roslyn/commit/1119ab9dfe3beb00b57ddef19674b956e7861d7d **Steps to Reproduce**: https://sharplab.io/#v2:EYLgZgpghgLgrgJwgZwLQEsB2MIIA4D2ANrBACarIwJYDmAPgMSZxEnBEQAEEmUHEALAAoAAIAmAIwjRAZi4SuAYS4BvEV00L5oyQAYuAWQAUug1AA0C/V2ABKLgF4AfFwAkAIlVQAvmuA+HgDcIj4iInwAtih4UADG3LoAdABKcNjo0UlKBJF46JwIAMq4AG7oCcgi6sJaXADayQCCMNTowHA4AKrIULQQLW0dOKaSSYM0wxAAKlAI/TDI2STIyFz01uOtk50zcwtLRdRwcTBWTWwEAO6GrDDoeJxOXGBQRMgQVgCSmAAWuOgcGRnq93hA7ABdDRaORcD5vcgKcRcH44fDEUhkI40TC0AASUEwZEKE3auy4IE2pKm0M0NTqdVhqNwhBIQOxdAJRJJ2zJIwcqi4YVqWmFdUaY2pux6fQgoy2Q12s3mEEWSQACnMoNE0edLjc7g8no4Xm8Pt8/gCgSCzeCoSLNLD4ZxgYpmei2eQObiucTcE15nBotgpTgKVTeTSHWpaQymdgWRj2W0fYS/QgA7Qg7wYKG5WYuPts9gBULY4z5O7WZjvfi0yTA8Hc5HdsZYghtWszPUIYXGznkKWxQzHTp9D2uJni4s1FwFrOYL8ENcuCw2EEhWXo8PNBLUul7lkcnkCrgSghypUklWk16U3Xuf6Wzh7RWuEgwHDjqcuAARCCvHcN6eli96+oUsb0iOXB4DQpSkO+0BkAQmBEAAnlwBDAAAVhAP4APpkEGkRoSE0Z1LB6DwWGSBQMhqEYVgMBcIRxFoeqNCRICVEQGR0HaH+AFQEBCYejWYH1rgxhMVwRCArgbwADK8LQi5WDJYAEAgkSwECOQHqWi7Llcq6sEQG47nG8j/oBRAwMB4k4g+6bSdgsnyR2RDKbialcBpWk6a05D6dgVjJF8ABiAWwBxBDlGQuAAPwwcu8W4IZS4rmu5lbvxsI2cJdkOcmTngVJMlyWiSkqb5/nabpwUEAeYVjJF0UwLFaUIMlsFxegCUIC1SRFLEmAADxxL8cyuFg3FvAAQnAYCQAgGXGaZ665dBsKiAALJOeB4LwZCKR5byjAY8FEHA4KzpZb57QdR1ElF9VBWQ8opEhADyDEjYSE1TQgrhXTdQ7ljCOj7U0h3Ha9gVAp9P1/aNgPTVwoOfH5blvOgtCYE2zx6C1ejJZpb3PNl4PkZDCjQ7DL3tUCY3TM4xjTBjbxg3dEOjnTT1w0z5As2zHOYyTZPtdTeVQwLjNvczrPs5z11YzJuP4020vbbLMPPWQ8MNWQIvK+L2PMRrBM5hLLxSzzNN849euCwr5DGFhuGnMlZvq3Jms5kTNvk4FlNmdrI47fT+uG+9F3e1zt2CkZWVmRZvMCU7DMG0LH1mPHqvqTjftW25JrE9YpO2xTJpU/bMuYaUuA0AlFdcNMBC1sYa0p5t920wW7e1k0RJKJwcxdwumUmdlafbqEQA== ```C# public class C { public string M(string a, string b) => $"{a} {b}"; } ``` **Expected Behavior**: The compiler should emit string.Concat when there's a good overload available, so the above should be lowered to the equivalent of: ```C# public class C { public string M(string a, string b) => string.Concat(a, " ", b); } ``` **Actual Behavior**: The compiler is lowering this to use the default interpolated string handler, equivalent to: ```C# public string M(string a, string b) { var h = new DefaultInterpolatedStringHandler(1, 2); h.AppendFormatted(a); h.AppendLiteral(" "); h.AppendFormatted(b); return h.ToStringAndClear(); } ``` This will manifest as a performance regression. cc: @333fred
Version Used:
1119ab9
Steps to Reproduce:
https://sharplab.io/#v2:EYLgZgpghgLgrgJwgZwLQEsB2MIIA4D2ANrBACarIwJYDmAPgMSZxEnBEQAEEmUHEALAAoAAIAmAIwjRAZi4SuAYS4BvEV00L5oyQAYuAWQAUug1AA0C/V2ABKLgF4AfFwAkAIlVQAvmuA+HgDcIj4iInwAtih4UADG3LoAdABKcNjo0UlKBJF46JwIAMq4AG7oCcgi6sJaXADayQCCMNTowHA4AKrIULQQLW0dOKaSSYM0wxAAKlAI/TDI2STIyFz01uOtk50zcwtLRdRwcTBWTWwEAO6GrDDoeJxOXGBQRMgQVgCSmAAWuOgcGRnq93hA7ABdDRaORcD5vcgKcRcH44fDEUhkI40TC0AASUEwZEKE3auy4IE2pKm0M0NTqdVhqNwhBIQOxdAJRJJ2zJIwcqi4YVqWmFdUaY2pux6fQgoy2Q12s3mEEWSQACnMoNE0edLjc7g8no4Xm8Pt8/gCgSCzeCoSLNLD4ZxgYpmei2eQObiucTcE15nBotgpTgKVTeTSHWpaQymdgWRj2W0fYS/QgA7Qg7wYKG5WYuPts9gBULY4z5O7WZjvfi0yTA8Hc5HdsZYghtWszPUIYXGznkKWxQzHTp9D2uJni4s1FwFrOYL8ENcuCw2EEhWXo8PNBLUul7lkcnkCrgSghypUklWk16U3Xuf6Wzh7RWuEgwHDjqcuAARCCvHcN6eli96+oUsb0iOXB4DQpSkO+0BkAQmBEAAnlwBDAAAVhAP4APpkEGkRoSE0Z1LB6DwWGSBQMhqEYVgMBcIRxFoeqNCRICVEQGR0HaH+AFQEBCYejWYH1rgxhMVwRCArgbwADK8LQi5WDJYAEAgkSwECOQHqWi7Llcq6sEQG47nG8j/oBRAwMB4k4g+6bSdgsnyR2RDKbialcBpWk6a05D6dgVjJF8ABiAWwBxBDlGQuAAPwwcu8W4IZS4rmu5lbvxsI2cJdkOcmTngVJMlyWiSkqb5/nabpwUEAeYVjJF0UwLFaUIMlsFxegCUIC1SRFLEmAADxxL8cyuFg3FvAAQnAYCQAgGXGaZ665dBsKiAALJOeB4LwZCKR5byjAY8FEHA4KzpZb57QdR1ElF9VBWQ8opEhADyDEjYSE1TQgrhXTdQ7ljCOj7U0h3Ha9gVAp9P1/aNgPTVwoOfH5blvOgtCYE2zx6C1ejJZpb3PNl4PkZDCjQ7DL3tUCY3TM4xjTBjbxg3dEOjnTT1w0z5As2zHOYyTZPtdTeVQwLjNvczrPs5z11YzJuP4020vbbLMPPWQ8MNWQIvK+L2PMRrBM5hLLxSzzNN849euCwr5DGFhuGnMlZvq3Jms5kTNvk4FlNmdrI47fT+uG+9F3e1zt2CkZWVmRZvMCU7DMG0LH1mPHqvqTjftW25JrE9YpO2xTJpU/bMuYaUuA0AlFdcNMBC1sYa0p5t920wW7e1k0RJKJwcxdwumUmdlafbqEQA==
Expected Behavior:
The compiler should emit string.Concat when there's a good overload available, so the above should be lowered to the equivalent of:
Actual Behavior:
The compiler is lowering this to use the default interpolated string handler, equivalent to:
This will manifest as a performance regression.
cc: @333fred