public IList GetAttributes()

in src/CodeGenerators/SettingsGen/Wrappers/GeneratorSyntaxContextWrapper.cs [34:79]


		public IList<IAttributeWrapper> GetAttributes(ISymbol symbol)
		{
			ImmutableArray<AttributeData> attrs = symbol.GetAttributes();
			IList<IAttributeWrapper> attributeWrappers = new List<IAttributeWrapper>();

			// Format the attributes
			foreach (AttributeData attribute in attrs)
			{
				string? attrClassName = attribute.AttributeClass?.Name;

				if (attrClassName is null)
				{
					continue;
				}

				// Parse the attribute arguments into a dictionary
				AttributeWrapper attributeWrapper = new(attrClassName);
				ImmutableArray<KeyValuePair<string, TypedConstant>> namedArgs = attribute.NamedArguments;
				foreach (KeyValuePair<string, TypedConstant> arg in namedArgs)
				{
					if (arg.Value.IsNull)
					{
						continue;
					}

					string valueString = arg.Value.Value?.ToString() ?? string.Empty;

					if (string.Equals(arg.Key, nameof(ParameterAttribute.MustOverride), StringComparison.OrdinalIgnoreCase) ||
						string.Equals(arg.Key, nameof(ParameterAttribute.IsEncrypted), StringComparison.OrdinalIgnoreCase))
					{
						valueString = valueString.ToLowerInvariant();
					}

					if (string.Equals(arg.Key, nameof(ParameterAttribute.Type), StringComparison.OrdinalIgnoreCase)
						&& Enum.TryParse(arg.Value.Value?.ToString() ?? string.Empty, out TypeKind typeKind))
					{
						valueString = typeKind.ToString("g");
					}

					attributeWrapper.Arguments.Add(arg.Key, valueString);
				}
				attributeWrappers.Add(attributeWrapper);
			}

			return attributeWrappers;
		}