/// <summary> /// Adds suggestions for an enum, with an optional prefix. /// </summary> /// <param name="intellisenseData"></param> /// <param name="enumInfo"></param> /// <param name="prefix"></param> internal static void AddSuggestionsForEnum(IntellisenseData.IntellisenseData intellisenseData, EnumSymbol enumInfo, string prefix = "") { Contracts.AssertValue(intellisenseData); Contracts.AssertValue(enumInfo); Contracts.AssertValue(prefix); bool anyCollisionExists = false; var locNameTypePairs = new List <Tuple <String, DType> >(); // We do not need to get the localized names since GetNames will only return invariant. // Instead, we use the invariant names later with the enumInfo to retrieve the localized name. foreach (var typedName in enumInfo.EnumType.GetNames(DPath.Root)) { string locName; enumInfo.TryGetLocValueName(typedName.Name.Value, out locName).Verify(); string escapedLocName = TexlLexer.EscapeName(locName); var collisionExists = intellisenseData.DoesNameCollide(locName); if (collisionExists) { string candidate = prefix + escapedLocName; bool canAddSuggestion = _addSuggestionDryRunHelper.AddSuggestion(intellisenseData, candidate, SuggestionKind.Global, SuggestionIconKind.Other, typedName.Type, false); anyCollisionExists = anyCollisionExists || canAddSuggestion; } locNameTypePairs.Add(new Tuple <String, DType>(escapedLocName, typedName.Type)); } foreach (var locNameTypePair in locNameTypePairs) { string suggestion = anyCollisionExists || !intellisenseData.SuggestUnqualifiedEnums ? prefix + locNameTypePair.Item1 : locNameTypePair.Item1; AddSuggestion(intellisenseData, suggestion, SuggestionKind.Global, SuggestionIconKind.Other, locNameTypePair.Item2, false); } }