in ReSharper.FSharp/src/FSharp/FSharp.Psi/src/Impl/DeclaredElement/CompilerGenerated/FSharpUnionTagsClass.cs [15:106]
public class FSharpUnionTagsClass([CanBeNull] TypeElement typeElement) : FSharpGeneratedMemberBase, IClass
{
private const string TagsClassName = "Tags";
public readonly TypeElement Union = typeElement;
public override DeclaredElementType GetElementType() =>
CLRDeclaredElementType.CLASS;
internal IUnionPart UnionPart =>
(IUnionPart) Union.EnumerateParts().FirstOrDefault(p => p is IUnionPart);
protected override IClrDeclaredElement ContainingElement => Union;
public override ITypeElement GetContainingType() => Union;
public override ITypeMember GetContainingTypeMember() => Union;
public override string ShortName => TagsClassName;
public IList<ITypeParameter> TypeParameters => EmptyList<ITypeParameter>.Instance;
public int TypeParametersCount => 0;
public IClrTypeName GetClrName() =>
new ClrTypeName($"{Union.GetClrName().FullName}+{TagsClassName}");
public IEnumerable<ITypeMember> GetMembers() => Constants;
public IEnumerable<string> MemberNames =>
UnionPart.CaseDeclarations.Select(c => c.CompiledName);
public INamespace GetContainingNamespace() =>
Union.GetContainingNamespace();
public bool HasMemberWithName(string shortName, bool ignoreCase)
{
var comparisonRule = ignoreCase ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal;
foreach (var name in MemberNames)
if (string.Equals(name, shortName, comparisonRule))
return true;
return false;
}
public IPsiSourceFile GetSingleOrDefaultSourceFile() =>
Union.GetSingleOrDefaultSourceFile();
public override bool IsStatic => true;
public IEnumerable<IField> Constants
{
get
{
var tags = new List<IField>();
foreach (var unionCase in UnionPart.Cases)
tags.Add(new FSharpUnionCaseTag(unionCase));
return tags;
}
}
public IDeclaredType GetBaseClassType() => PredefinedType.Object;
public IClass GetSuperClass() => GetBaseClassType().GetClassType();
public IList<IDeclaredType> GetSuperTypes() => new[] {GetBaseClassType()};
public IList<ITypeElement> GetSuperTypeElements() => GetSuperTypes().ToTypeElements();
public MemberPresenceFlag GetMemberPresenceFlag() =>
MemberPresenceFlag.NONE;
public IEnumerable<IField> Fields => EmptyList<IField>.Instance;
public IList<ITypeElement> NestedTypes => EmptyList<ITypeElement>.Instance;
public IEnumerable<IConstructor> Constructors => EmptyList<IConstructor>.Instance;
public IEnumerable<IOperator> Operators => EmptyList<IOperator>.Instance;
public IEnumerable<IMethod> Methods => EmptyList<IMethod>.Instance;
public IEnumerable<IProperty> Properties => EmptyList<IProperty>.Instance;
public IEnumerable<IEvent> Events => EmptyList<IEvent>.Instance;
public override bool Equals(object obj)
{
if (ReferenceEquals(this, obj))
return true;
return obj is FSharpUnionTagsClass tags && Equals(GetContainingType(), tags.GetContainingType());
}
public override int GetHashCode() => Union.GetHashCode();
public override string XMLDocId =>
XMLDocUtil.GetTypeElementXmlDocId(this);
public override AccessRights GetAccessRights() =>
Union.GetRepresentationAccessRights();
}