Exemplo n.º 1
0
        public string GetDebugString()
        {
            // NOTE: keep this in sync with Serialize below.

            using var _ = PooledStringBuilder.GetInstance(out var sb);

            var(languages, values) = this.GetLanguagesAndValuesToSerialize(includeValues: true);

            sb.AppendLine($"languages count: {languages.Count}");
            foreach (var language in languages.Order())
            {
                Debug.Assert(RemoteSupportedLanguages.IsSupported(language));
                sb.AppendLine(language);
            }

            sb.AppendLine();
            sb.AppendLine($"values count: {values.Count}");
            foreach (var(optionKey, (kind, value)) in values)
            {
                SerializeOptionKey(optionKey);

                sb.Append($"{kind}: ");
                if (kind == OptionValueKind.Enum)
                {
                    RoslynDebug.Assert(value != null);
                    sb.AppendLine(value.ToString());
                }
                else if (kind is OptionValueKind.CodeStyleOption)
                {
                    RoslynDebug.Assert(value != null);
                    var codeStyleOption = (ICodeStyleOption)value;
                    sb.AppendLine(codeStyleOption.ToXElement().ToString());
                }
                else if (kind is OptionValueKind.NamingStylePreferences)
                {
                    RoslynDebug.Assert(value != null);
                    var namingStylePreferences = (NamingStylePreferences)value;
                    sb.AppendLine(namingStylePreferences.CreateXElement().ToString());
                }
                else
                {
                    sb.AppendLine($"{value}");
                }

                sb.AppendLine();
            }

            sb.AppendLine();
            sb.AppendLine($"changed options count: {_changedOptionKeysSerializable.Count}");
            foreach (var changedKey in _changedOptionKeysSerializable.OrderBy(OptionKeyComparer.Instance))
            {
                SerializeOptionKey(changedKey);
            }

            return(sb.ToString());

            void SerializeOptionKey(OptionKey optionKey)
            {
                Debug.Assert(ShouldSerialize(optionKey));

                sb.AppendLine($"{optionKey.Option.Name} {optionKey.Option.Feature} {optionKey.Option.IsPerLanguage} {optionKey.Language}");
            }
        }