Search Issue Tracker

By Design

Votes

0

Found in [Package]

1.8.7

Issue ID

BUR-2449

Regression

No

Mixing types in string interpolation causes BC1345

Package: Burst

-

String interpolation works when using like types, but not when mixing.

 
{code:java}
[BurstCompile]
static public void AnyAmountOfIntegers()
{
    Debug.Log($"{0}{0}{0}");
}
[BurstCompile]
static public void AnyAmountOfStrings()
{
    Debug.Log($"{""}{""}{""}");
}
[BurstCompile]
static public void MixOneStringAndInteger()
{
    // Burst error BC1345: Invalid argument type byte* with index 0. Only value types are supported.
    Debug.Log($"{""}{0}");
}
[BurstCompile]
static public void MixOneIntegerAndString()
{
    // Burst error BC1345: Invalid argument type byte* with index 1. Only value types are supported.
    Debug.Log($"{0}{""}");
}
{code}
 

  1. Resolution Note:

    This is actually as-designed. The reason the multiple-empty-strings example works is because Roslyn collapses it down to a single empty string literal. Whereas for the integer+string, the string is routed via an {{object}} parameter in {{string.Format}}, and Burst doesn't support that.

    https://sharplab.io/#v2:EYLgHgbALANALiAlgGwD4AEBMBGAsAKHQGYACLEgYRIG8CT6zT0oSBZACgEoa6G+B6fiQAiAewCmAZwB2AcjgkA7qIBOAaxKJpJAEIBXFZIXBxAYwCGeyeM0K4ACxvpsABk2SSK0XrjiAJprScKIk5toABqLAAFZmcOEkAA7mKuYAtuK+KgB0vHz0zgCc7AAkAETULgC+1GVlVWWcANx5JFWtrcRkLAByXDz4+QyCJADqqmoeWroGRiQmFlY2AEqiksgAntqmosjI5onWU3Yh5iQ70kZhCs4uuYNDZNjF5bX1bw3Nre34VUA

Add comment

Log in to post comment

All about bugs

View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.