Character IOBox with backslash breaks compilation

Somewhere between 7.0-0036 and 7.0-0057, there must have been a breaking change regarding escaping characters or handling of string/char IOBoxes.

Paste this into the preview 7.0-0064 to break the compilation:

<?xml version="1.0" encoding="utf-16"?>
<Canvas xmlns:p="property" xmlns:r="reflection" Id="T4Nr5SvPpwRMUnGxvyCo6p" MergeId="314" CanvasType="Group">
  <Pad Id="O9sLfqrbNVqM14koHN7NnG" Comment="" Bounds="1022,269,20,15" ShowValueBox="true" isIOBox="true" Value="\">
    <p:TypeAnnotation LastCategoryFullName="Primitive" LastDependency="VL.CoreLib.vl">
      <Choice Kind="TypeFlag" Name="Char" />
    </p:TypeAnnotation>
  </Pad>
</Canvas>

Emit Exception

EmitException: “C:\Users\TF\Documents\vvvv\gamma-preview\Sketches\callmenames-2025-02-04.vl.1.3.cs(121,200): error CS1012: Too many characters in character literal”
StackTrace:
VL.Lang.Platforms.Roslyn.TargetCompilation+<>c__DisplayClass6_3 { internal System.ValueTuple<Microsoft.CodeAnalysis.PortableExecutableReference, VL.Core.RawAssembly> g__Emit|5(bool includeSource, System.Threading.CancellationToken token, VL.Lang.Platforms.Roslyn.<>c__DisplayClass6_2& ) { … } }
VL.Lang.Platforms.Roslyn.TargetCompilation+<>c__DisplayClass6_0 { internal VL.Lang.Platforms.Roslyn.ProjectCompilation g__Build|0(VL.Lang.Platforms.Roslyn.ProjectBuildRequest projectBuildRequest) { … } }
VL.Lang.Platforms.Roslyn.TargetCompilation+<>c__DisplayClass6_1+<b__1>d { private virtual void MoveNext() { … } }
System.Runtime.ExceptionServices.ExceptionDispatchInfo { public void Throw() { … } }
System.Runtime.CompilerServices.TaskAwaiter { private static void ThrowForNonSuccess(System.Threading.Tasks.Task task) { … } }
System.Runtime.CompilerServices.TaskAwaiter { private static void HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task task, System.Threading.Tasks.ConfigureAwaitOptions options) { … } }
System.Runtime.CompilerServices.TaskAwaiter1 { public TResult GetResult() { ... } } VL.Lang.Platforms.Roslyn.TargetCompilation+<InitializeAsync>d__6 { private virtual void MoveNext() { ... } } System.Runtime.ExceptionServices.ExceptionDispatchInfo { public void Throw() { ... } } System.Runtime.CompilerServices.TaskAwaiter { private static void ThrowForNonSuccess(System.Threading.Tasks.Task task) { ... } } System.Runtime.CompilerServices.TaskAwaiter { private static void HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task task, System.Threading.Tasks.ConfigureAwaitOptions options) { ... } } System.Runtime.CompilerServices.TaskAwaiter1 { public TResult GetResult() { … } }
VL.Lang.Platforms.Roslyn.TargetCompilation+d__4 { private virtual void MoveNext() { … } }
System.Runtime.ExceptionServices.ExceptionDispatchInfo { public void Throw() { … } }
System.Runtime.CompilerServices.TaskAwaiter { private static void ThrowForNonSuccess(System.Threading.Tasks.Task task) { … } }
System.Runtime.CompilerServices.TaskAwaiter { private static void HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task task, System.Threading.Tasks.ConfigureAwaitOptions options) { … } }
System.Runtime.CompilerServices.TaskAwaiter1 { public TResult GetResult() { ... } } VL.Lang.Platforms.Roslyn.TargetCompilation+<WithCompilationAsync>d__43 { private virtual void MoveNext() { ... } } System.Runtime.ExceptionServices.ExceptionDispatchInfo { public void Throw() { ... } } System.Runtime.CompilerServices.TaskAwaiter { private static void ThrowForNonSuccess(System.Threading.Tasks.Task task) { ... } } System.Runtime.CompilerServices.TaskAwaiter { private static void HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task task, System.Threading.Tasks.ConfigureAwaitOptions options) { ... } } System.Runtime.CompilerServices.TaskAwaiter1 { public TResult GetResult() { … } }
VL.Lang.Platforms.Roslyn.TargetCompilation+d__44 { private virtual void MoveNext() { … } }
System.Runtime.ExceptionServices.ExceptionDispatchInfo { public void Throw() { … } }
System.Runtime.CompilerServices.TaskAwaiter { private static void ThrowForNonSuccess(System.Threading.Tasks.Task task) { … } }
System.Runtime.CompilerServices.TaskAwaiter { private static void HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task task, System.Threading.Tasks.ConfigureAwaitOptions options) { … } }
System.Runtime.CompilerServices.TaskAwaiter`1 { public TResult GetResult() { … } }
VL.Model.VLSession+d__118 { private virtual void MoveNext() { … } }
System.Runtime.ExceptionServices.ExceptionDispatchInfo { public void Throw() { … } }
System.Runtime.CompilerServices.TaskAwaiter { private static void ThrowForNonSuccess(System.Threading.Tasks.Task task) { … } }
System.Runtime.CompilerServices.TaskAwaiter { private static void HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task task, System.Threading.Tasks.ConfigureAwaitOptions options) { … } }
VL.Model.VLSession+d__117 { private virtual void MoveNext() { … } }
System.Runtime.ExceptionServices.ExceptionDispatchInfo { public void Throw() { … } }
System.Runtime.CompilerServices.TaskAwaiter { private static void ThrowForNonSuccess(System.Threading.Tasks.Task task) { … } }
System.Runtime.CompilerServices.TaskAwaiter { private static void HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task task, System.Threading.Tasks.ConfigureAwaitOptions options) { … } }
VL.Model.VLSession+d__141 { private virtual void MoveNext() { … } }

Thanks, stumbled upon this one as well. Fixed in upcoming build.

2 Likes