diff --git a/src/ExpressionEvaluator/Core/Source/ResultProvider/Expansion/MemberExpansion.cs b/src/ExpressionEvaluator/Core/Source/ResultProvider/Expansion/MemberExpansion.cs index 47dd35c5a42d81440af1ff4e9826f40edc437253..d140a36d12fe21529d1f367cd89b80c123b8bfae 100644 --- a/src/ExpressionEvaluator/Core/Source/ResultProvider/Expansion/MemberExpansion.cs +++ b/src/ExpressionEvaluator/Core/Source/ResultProvider/Expansion/MemberExpansion.cs @@ -120,7 +120,7 @@ internal sealed class MemberExpansion : Expansion expansions.Add(favoritesExpansion); // Check if we are only expanding favorites. - if (inspectionContext.EvaluationFlags.HasFlag(DkmEvaluationFlags.FilterToFavorites)) + if ((inspectionContext.EvaluationFlags & DkmEvaluationFlags.FilterToFavorites) == DkmEvaluationFlags.FilterToFavorites) { instanceMembers.Free(); staticMembers.Free(); diff --git a/src/ExpressionEvaluator/Core/Source/ResultProvider/Helpers/DebuggerDisplayInfo.cs b/src/ExpressionEvaluator/Core/Source/ResultProvider/Helpers/DebuggerDisplayInfo.cs index 3dcc74bc291c8f9b7a05d3f7673a2e53af48cd53..458e2b9be188f690b0c9b9f226070dad978c7b22 100644 --- a/src/ExpressionEvaluator/Core/Source/ResultProvider/Helpers/DebuggerDisplayInfo.cs +++ b/src/ExpressionEvaluator/Core/Source/ResultProvider/Helpers/DebuggerDisplayInfo.cs @@ -26,7 +26,7 @@ public DebuggerDisplayInfo(DkmClrType targetType) public DebuggerDisplayItemInfo GetValue(DkmInspectionContext inspectionContext) { - if (m_simpleValue != null && inspectionContext.EvaluationFlags.HasFlag(DkmEvaluationFlags.UseSimpleDisplayString)) + if (m_simpleValue != null && (inspectionContext.EvaluationFlags & DkmEvaluationFlags.UseSimpleDisplayString) == DkmEvaluationFlags.UseSimpleDisplayString) { return m_simpleValue; } diff --git a/src/ExpressionEvaluator/Core/Source/ResultProvider/Helpers/TypeHelpers.cs b/src/ExpressionEvaluator/Core/Source/ResultProvider/Helpers/TypeHelpers.cs index 42024abd7edf0bfaab1b3db6d67317539d249e07..9a2032fef2d876b5ea56faed3d953fea98fb85e8 100644 --- a/src/ExpressionEvaluator/Core/Source/ResultProvider/Helpers/TypeHelpers.cs +++ b/src/ExpressionEvaluator/Core/Source/ResultProvider/Helpers/TypeHelpers.cs @@ -66,10 +66,15 @@ internal static class TypeHelpers } // Get the favorites information if it is supported. - HashSet favoritesMemberNames = null; + Dictionary favoritesMemberNames = null; if (supportsFavorites && favoritesInfo?.Favorites != null) { - favoritesMemberNames = new HashSet(favoritesInfo.Favorites); + favoritesMemberNames = new Dictionary(favoritesInfo.Favorites.Count); + + foreach (var favorite in favoritesInfo.Favorites) + { + favoritesMemberNames.Add(favorite, null); + } } // Hide non-public members if hideNonPublic is specified (intended to reflect the @@ -166,7 +171,7 @@ internal static class TypeHelpers previousDeclaration, inheritanceLevel, canFavorite: supportsFavorites, - isFavorite: (favoritesMemberNames?.Contains(memberName) == true))); + isFavorite: (favoritesMemberNames?.ContainsKey(memberName) == true))); } } diff --git a/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/Engine/DkmClrObjectFavoritesInfo.cs b/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/Engine/DkmClrObjectFavoritesInfo.cs new file mode 100644 index 0000000000000000000000000000000000000000..aec17ffa6baec59b0e0aee2bfe85ce27cabfd43f --- /dev/null +++ b/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/Engine/DkmClrObjectFavoritesInfo.cs @@ -0,0 +1,17 @@ +// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +#region Assembly Microsoft.VisualStudio.Debugger.Engine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a +// References\Debugger\v2.0\Microsoft.VisualStudio.Debugger.Engine.dll + +#endregion + +using System.Collections.ObjectModel; + +namespace Microsoft.VisualStudio.Debugger.Evaluation +{ + public class DkmClrObjectFavoritesInfo + { + public string DisplayString => null; + public string SimpleDisplayString => null; + public ReadOnlyCollection Favorites => null; + } +} diff --git a/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/Engine/DkmClrType.cs b/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/Engine/DkmClrType.cs index f688f91509b9ac4e9b3b6b37bb5c941b696ad98a..7b7fb5c3a13d05033d42fc6582e1e5f864a5877e 100644 --- a/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/Engine/DkmClrType.cs +++ b/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/Engine/DkmClrType.cs @@ -361,5 +361,7 @@ private static DkmClrDebuggerVisualizerAttribute[] GetDebuggerVisualizerAttribut return builder.ToArrayAndFree(); } + + public DkmClrObjectFavoritesInfo GetFavorites() => null; } } diff --git a/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/Engine/DkmEvaluationFlags.cs b/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/Engine/DkmEvaluationFlags.cs index 3b30735e24987e60c47d3cd43a5c2af05f64e246..842bc58b61cd3d250c79029afe4520fdd9fe7dfd 100644 --- a/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/Engine/DkmEvaluationFlags.cs +++ b/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/Engine/DkmEvaluationFlags.cs @@ -22,5 +22,7 @@ public enum DkmEvaluationFlags DynamicView = 16384, ResultsOnly = 32768, NoExpansion = 65536, + FilterToFavorites = 0x40000, + UseSimpleDisplayString = 0x80000, } } diff --git a/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/Engine/DkmEvaluationResultFlags.cs b/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/Engine/DkmEvaluationResultFlags.cs index da52302af19e4ea35240e1f7913570799e84509b..10b82f6fcf7c477335a350809a424564a33e89e0 100644 --- a/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/Engine/DkmEvaluationResultFlags.cs +++ b/src/ExpressionEvaluator/Core/Test/ResultProvider/Debugger/Engine/DkmEvaluationResultFlags.cs @@ -28,5 +28,8 @@ public enum DkmEvaluationResultFlags Visualized = 8192, ExpandableError = 16384, ExceptionThrown = 32768, + CanFavorite = 0x1000000, + IsFavorite = 0x2000000, + HasFavorites = 0x4000000, } }