Hey hey,
In the latest preview, selecting a process node and pressing CTRL + SHIFT + D
throws an InvalidOperationException
: "Sequence contains more than one matching element"
. Nothing happens in the patch, but the following exception is logged to the Console.
Full stack trace
InvalidOperationException: "Sequence contains more than one matching element"
StackTrace:
System.Linq.ThrowHelper { internal static void ThrowMoreThanOneMatchException() { ... } }
System.Linq.Enumerable { private static TSource TryGetSingle(System.Collections.Generic.IEnumerable<> source, System.Func<, > predicate, System.Boolean& found) { ... } }
System.Linq.Enumerable { public static TSource SingleOrDefault(System.Collections.Generic.IEnumerable<> source, System.Func<, > predicate) { ... } }
VL.Model.ControlPoint+<GetAllModelErrors>d__65 { private virtual bool MoveNext() { ... } }
System.Collections.Generic.LargeArrayBuilder`1 { public void AddRange(System.Collections.Generic.IEnumerable<> items) { ... } }
System.Collections.Generic.EnumerableHelpers { internal static T[] ToArray(System.Collections.Generic.IEnumerable<> source) { ... } }
System.Collections.Immutable.ImmutableArray { public static System.Collections.Immutable.ImmutableArray<> CreateRange(System.Collections.Generic.IEnumerable<> items) { ... } }
VL.Model.InterlockedHelper { public static System.Collections.Immutable.ImmutableArray<> Init(System.Collections.Immutable.ImmutableArray<>& this, System.Collections.Generic.IEnumerable<> values) { ... } }
VL.Model.Element { public System.Collections.Immutable.ImmutableArray<VL.Model.ModelError> get_AllModelErrors() { ... } }
VL.Model.Element { public bool get_IsValid() { ... } }
VL.Model.ModelExtensions+<>c__70`1 { internal bool <CleanInvalidElements>b__70_12(VL.Model.ControlPoint cp) { ... } }
System.Linq.Enumerable+WhereEnumerableIterator`1 { public virtual bool MoveNext() { ... } }
VL.Model.ModelExtensions { public static TContainer RemoveChildren(TContainer container, System.Collections.Generic.IEnumerable<VL.Model.Element> children) { ... } }
VL.Model.ModelExtensions+<>c__70`1 { internal VL.Model.Element <CleanInvalidElements>b__70_4(VL.Model.Canvas c) { ... } }
Microsoft.CodeAnalysis.Shared.Extensions.ObjectExtensions { public static TResult TypeSwitch(TBaseType obj, System.Func<, > matchFunc1, System.Func<, > matchFunc2, System.Func<, > matchFunc3, System.Func<, > matchFunc4, System.Func<, > matchFunc5, System.Func<, > defaultFunc) { ... } }
VL.Model.ModelExtensions+<>c__70`1 { internal VL.Model.Element <CleanInvalidElements>b__70_0(VL.Model.Element e) { ... } }
VL.Model.ModelExtensions { public static TContainer UpdateDescendentsBottomUp(TContainer container, System.Func<, > update, bool traverseIntoCanvases) { ... } }
VL.Model.ModelExtensions { public static TContainer UpdateSelfAndDescendentsBottomUp(TContainer element, System.Func<VL.Model.Element, VL.Model.Element> update, bool traverseIntoCanvases) { ... } }
VL.Model.ModelExtensions+<>c__DisplayClass45_0`1 { internal TContainer <UpdateSelfAndDescendentsBottomUpBatched>b__0(TContainer c) { ... } }
VL.Model.ModelExtensions { public static T BatchUpdate(T element, System.Func<, > update) { ... } }
VL.Model.ModelExtensions { public static TContainer UpdateSelfAndDescendentsBottomUpBatched(TContainer container, System.Func<VL.Model.Element, VL.Model.Element> update, bool traverseIntoCanvases) { ... } }
VL.Model.ModelExtensions { public static TContainer CleanInvalidElements(TContainer container) { ... } }
VL.Model.ModelExtensions { public static VL.Model.Compound Merge(VL.Model.Compound compoundA, VL.Model.Compound compoundB, bool keepTopology) { ... } }
VL.Lang.View.MenuFactory { private void Paste(VL.Model.Compound targetCompound, VL.Model.Compound pasteCompound, VL.Model.Point2 offset, bool keepTopology) { ... } }
VL.Lang.View.MenuFactory { private void Duplicate(bool withContext) { ... } }
VL.Lang.View.MenuFactory+<>c__DisplayClass18_0 { internal void <GetEditMenu>b__11(VL.Lang.Menu.MenuEntry _) { ... } }
VL.HDE.PatchEditor.PatchContextMenu { private bool PerformShortCut(System.Collections.Generic.IEnumerable<VL.Lang.Menu.IMenuEntry> menuEntries, System.Windows.Forms.Keys shortcut) { ... } }
VL.HDE.PatchEditor.PatchContextMenu { private bool PerformShortCut(System.Collections.Generic.IEnumerable<VL.Lang.Menu.IMenuEntry> menuEntries, System.Windows.Forms.Keys shortcut) { ... } }
VL.HDE.PatchEditor.PatchContextMenu { public bool PerformShortCut(System.Windows.Forms.KeyEventArgs ke) { ... } }
VL.HDE.PatchEditor.CanvasWindow { protected virtual bool ProcessCmdKey(System.Windows.Forms.Message& msg, System.Windows.Forms.Keys keyData) { ... } }
System.Windows.Forms.Control { public virtual bool PreProcessMessage(System.Windows.Forms.Message& msg) { ... } }
System.Windows.Forms.Control { internal static System.Windows.Forms.PreProcessControlState PreProcessControlMessageInternal(System.Windows.Forms.Control target, System.Windows.Forms.Message& message) { ... } }
System.Windows.Forms.Application+ThreadContext { internal bool PreTranslateMessage(Windows.Win32.UI.WindowsAndMessaging.MSG& msg) { ... } }
InvalidOperationException: "Sequence contains more than one matching element"
StackTrace:
System.Linq.ThrowHelper { internal static void ThrowMoreThanOneMatchException() { ... } }
System.Linq.Enumerable { private static TSource TryGetSingle(System.Collections.Generic.IEnumerable<> source, System.Func<, > predicate, System.Boolean& found) { ... } }
System.Linq.Enumerable { public static TSource SingleOrDefault(System.Collections.Generic.IEnumerable<> source, System.Func<, > predicate) { ... } }
VL.Model.ControlPoint+<GetAllModelErrors>d__65 { private virtual bool MoveNext() { ... } }
System.Collections.Generic.LargeArrayBuilder`1 { public void AddRange(System.Collections.Generic.IEnumerable<> items) { ... } }
System.Collections.Generic.EnumerableHelpers { internal static T[] ToArray(System.Collections.Generic.IEnumerable<> source) { ... } }
System.Collections.Immutable.ImmutableArray { public static System.Collections.Immutable.ImmutableArray<> CreateRange(System.Collections.Generic.IEnumerable<> items) { ... } }
VL.Model.InterlockedHelper { public static System.Collections.Immutable.ImmutableArray<> Init(System.Collections.Immutable.ImmutableArray<>& this, System.Collections.Generic.IEnumerable<> values) { ... } }
VL.Model.Element { public System.Collections.Immutable.ImmutableArray<VL.Model.ModelError> get_AllModelErrors() { ... } }
VL.Model.Element { public bool get_IsValid() { ... } }
VL.Model.ModelExtensions+<>c__70`1 { internal bool <CleanInvalidElements>b__70_12(VL.Model.ControlPoint cp) { ... } }
System.Linq.Enumerable+WhereEnumerableIterator`1 { public virtual bool MoveNext() { ... } }
VL.Model.ModelExtensions { public static TContainer RemoveChildren(TContainer container, System.Collections.Generic.IEnumerable<VL.Model.Element> children) { ... } }
VL.Model.ModelExtensions+<>c__70`1 { internal VL.Model.Element <CleanInvalidElements>b__70_4(VL.Model.Canvas c) { ... } }
Microsoft.CodeAnalysis.Shared.Extensions.ObjectExtensions { public static TResult TypeSwitch(TBaseType obj, System.Func<, > matchFunc1, System.Func<, > matchFunc2, System.Func<, > matchFunc3, System.Func<, > matchFunc4, System.Func<, > matchFunc5, System.Func<, > defaultFunc) { ... } }
VL.Model.ModelExtensions+<>c__70`1 { internal VL.Model.Element <CleanInvalidElements>b__70_0(VL.Model.Element e) { ... } }
VL.Model.ModelExtensions { public static TContainer UpdateDescendentsBottomUp(TContainer container, System.Func<, > update, bool traverseIntoCanvases) { ... } }
VL.Model.ModelExtensions { public static TContainer UpdateSelfAndDescendentsBottomUp(TContainer element, System.Func<VL.Model.Element, VL.Model.Element> update, bool traverseIntoCanvases) { ... } }
VL.Model.ModelExtensions+<>c__DisplayClass45_0`1 { internal TContainer <UpdateSelfAndDescendentsBottomUpBatched>b__0(TContainer c) { ... } }
VL.Model.ModelExtensions { public static T BatchUpdate(T element, System.Func<, > update) { ... } }
VL.Model.ModelExtensions { public static TContainer UpdateSelfAndDescendentsBottomUpBatched(TContainer container, System.Func<VL.Model.Element, VL.Model.Element> update, bool traverseIntoCanvases) { ... } }
VL.Model.ModelExtensions { public static TContainer CleanInvalidElements(TContainer container) { ... } }
VL.Model.ModelExtensions { public static VL.Model.Compound Merge(VL.Model.Compound compoundA, VL.Model.Compound compoundB, bool keepTopology) { ... } }
VL.Lang.View.MenuFactory { private void Paste(VL.Model.Compound targetCompound, VL.Model.Compound pasteCompound, VL.Model.Point2 offset, bool keepTopology) { ... } }
VL.Lang.View.MenuFactory { private void Duplicate(bool withContext) { ... } }
VL.Lang.View.MenuFactory+<>c__DisplayClass18_0 { internal void <GetEditMenu>b__11(VL.Lang.Menu.MenuEntry _) { ... } }
VL.HDE.PatchEditor.PatchContextMenu { private bool PerformShortCut(System.Collections.Generic.IEnumerable<VL.Lang.Menu.IMenuEntry> menuEntries, System.Windows.Forms.Keys shortcut) { ... } }
VL.HDE.PatchEditor.PatchContextMenu { private bool PerformShortCut(System.Collections.Generic.IEnumerable<VL.Lang.Menu.IMenuEntry> menuEntries, System.Windows.Forms.Keys shortcut) { ... } }
VL.HDE.PatchEditor.PatchContextMenu { public bool PerformShortCut(System.Windows.Forms.KeyEventArgs ke) { ... } }
VL.HDE.PatchEditor.CanvasWindow { protected virtual bool ProcessKeyPreview(System.Windows.Forms.Message& m) { ... } }
System.Windows.Forms.Control { virtual bool ProcessKeyMessage(System.Windows.Forms.Message& m) { ... } }
System.Windows.Forms.Control { private void WmKeyChar(System.Windows.Forms.Message& m) { ... } }
System.Windows.Forms.Control { protected virtual void WndProc(System.Windows.Forms.Message& m) { ... } }
VL.Skia.SkiaControlBase { protected virtual void WndProc(System.Windows.Forms.Message& m) { ... } }
Repro steps :
- Using
7.0-0314
, open GammaLauncher here - Navigate to
LaunchTabRuntime
(you can search it withCTRL + SHIFT + F
) - Look for the Save Bat File frame, select the
BuildBatFile
node and pressCTRL + SHIFT + D