From 9000cafd7342f8056e3196bbd64fc32c064abb58 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Sat, 16 Apr 2022 06:55:30 -0700 Subject: [PATCH] Fixed emit view cases in generics with multiple emit locations --- IDE/src/ui/SourceViewPanel.bf | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/IDE/src/ui/SourceViewPanel.bf b/IDE/src/ui/SourceViewPanel.bf index 64cb8790..a4c48e85 100644 --- a/IDE/src/ui/SourceViewPanel.bf +++ b/IDE/src/ui/SourceViewPanel.bf @@ -6137,7 +6137,18 @@ namespace IDE.ui } if (emitEmbed.mView != null) - emitViewDict[emitEmbed.mTypeName] = emitEmbed.mView; + { + if (emitViewDict.TryAdd(emitEmbed.mTypeName, var keyPtr, var valuePtr)) + { + *valuePtr = emitEmbed.mView; + } + else if (emitEmbed.mView.mTypeName != emitEmbed.mTypeName) + { + emitEmbed.mView.RemoveSelf(); + DeleteAndNullify!(emitEmbed.mView); + ewc.mCollapseNeedsUpdate = true; + } + } } } @@ -6146,7 +6157,7 @@ namespace IDE.ui if (embed.mCharData == null) continue; - if (emitViewDict.GetValue(embed.mTypeName) case .Ok(var emitEmbedView)) + if (emitViewDict.GetAndRemove(embed.mTypeName) case .Ok((var name, var emitEmbedView))) { var emitEmbed = emitEmbedView.mEmitEmbed;