Skip to content

Commit 0d0f442

Browse files
committed
Fixes #77
1 parent f136ccd commit 0d0f442

4 files changed

Lines changed: 22 additions & 9 deletions

File tree

Shared/Util/Extensions/ICollectionT.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,6 @@ public static class ICollectionTExtensions {
88
public static void AddRange<T>(this ICollection<T> dest, IEnumerable<T> toAdd) => toAdd.ForEach(x => dest.Add(x));
99

1010
public static void Add<T1, T2>(this ICollection<ValueTuple<T1, T2>> lst, T1 t1, T2 t2) => lst.Add((t1, t2));
11+
public static void Add<T1, T2, T3>(this ICollection<ValueTuple<T1, T2, T3>> lst, T1 t1, T2 t2, T3 t3) => lst.Add((t1, t2, t3));
1112
}
1213
}

Shared/Util/Extensions/IEnumerableTuple.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,7 @@ public static string Joined<T1, T2>(this IEnumerable<(T1, T2)> src, string delim
1717
public static IEnumerable<T2> Item2s<T1, T2>(this IEnumerable<(T1, T2)> src) => src.Select(x => x.Item2);
1818
public static IEnumerable<TResult> SelectT<T1, T2, TResult>(this IEnumerable<ValueTuple<T1, T2>> src, Func<T1, T2, TResult> selector) =>
1919
src.Select(x => selector(x.Item1, x.Item2));
20+
public static IEnumerable<TResult> SelectT<T1, T2, T3, TResult>(this IEnumerable<ValueTuple<T1, T2, T3>> src, Func<T1, T2, T3, TResult> selector) =>
21+
src.Select(x => selector(x.Item1, x.Item2, x.Item3));
2022
}
2123
}

Visualizer.Shared/VisualizerData.cs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ public class ExpressionNodeData : INotifyPropertyChanged {
138138
public string PathFromParent { get; set; } = "";
139139
public string FullPath { get; set; } = "";
140140
public (string @namespace, string typename, string propertyname)? ParentProperty { get; set; }
141-
public (string @namespace, string enumTypename, string membername)? NodeTypeParts { get; set; }
141+
public List<(string @namespace, string enumTypename, string membername)> NodeTypesParts { get; set; }
142142

143143
private List<(string @namespace, string typename)> _baseTypes;
144144
public List<(string @namespace, string typename)> BaseTypes => _baseTypes;
@@ -173,7 +173,14 @@ internal ExpressionNodeData(object o, (string aggregatePath, string pathFromPare
173173
switch (o) {
174174
case Expression expr:
175175
NodeType = expr.NodeType.ToString();
176-
NodeTypeParts = (typeof(ExpressionType).Namespace, nameof(ExpressionType), NodeType);
176+
NodeTypesParts = new List<(string @namespace, string enumTypename, string membername)> {
177+
(typeof(ExpressionType).Namespace, nameof(ExpressionType), NodeType)
178+
};
179+
if (expr is GotoExpression gexpr) {
180+
NodeTypesParts.Add(
181+
typeof(GotoExpressionKind).Namespace, nameof(GotoExpressionKind), gexpr.Kind.ToString()
182+
);
183+
}
177184
ReflectionTypeName = expr.Type.FriendlyName(language);
178185
IsDeclaration = isParameterDeclaration;
179186

@@ -227,7 +234,9 @@ internal ExpressionNodeData(object o, (string aggregatePath, string pathFromPare
227234
break;
228235
case MemberBinding mbind:
229236
NodeType = mbind.BindingType.ToString();
230-
NodeTypeParts = (typeof(MemberBindingType).Namespace, nameof(MemberBindingType), NodeType);
237+
NodeTypesParts = new List<(string @namespace, string enumTypename, string membername)> {
238+
(typeof(MemberBindingType).Namespace, nameof(MemberBindingType), NodeType)
239+
};
231240
Name = mbind.Member.Name;
232241
break;
233242
case CallSiteBinder callSiteBinder:

Visualizer.Shared/VisualizerDataControl.xaml.cs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -147,12 +147,13 @@ private void HelpContextMenu_Loaded(object sender, RoutedEventArgs e) {
147147

148148
addSeparator();
149149

150-
if (node.NodeTypeParts.HasValue) {
151-
var (@namespace, typename, membername) = node.NodeTypeParts.Value;
152-
listData.Add(
153-
$"Node type: {typename}.{membername}",
154-
$"{BaseUrl}{new[] { @namespace, typename }.Joined(".")}#{new[] { @namespace.Replace(".", "_"), typename, membername }.Joined("_")}"
155-
);
150+
if (node.NodeTypesParts != null) {
151+
foreach (var (@namespace, typename, membername) in node.NodeTypesParts) {
152+
listData.Add(
153+
$"Node type: {typename}.{membername}",
154+
$"{BaseUrl}{new[] { @namespace, typename }.Joined(".")}#{new[] { @namespace.Replace(".", "_"), typename, membername }.Joined("_")}"
155+
);
156+
}
156157
}
157158

158159
addSeparator();

0 commit comments

Comments
 (0)