public override IList <IAttributeInstance> GetAttributeInstances(IClrTypeName clrName) { if (AttributeClassNames.IsEmpty()) { return(EmptyList <IAttributeInstance> .Instance); } if (!(GetDeclaration()?.GetFSharpSymbol() is FSharpEntity entity)) { return(EmptyList <IAttributeInstance> .Instance); } var psiModule = GetPsiModule(); var entityAttrs = entity.Attributes; if (entityAttrs.Count == 0) { return(EmptyList <IAttributeInstance> .Instance); } var result = new FrugalLocalList <IAttributeInstance>(); foreach (var fcsAttribute in entityAttrs) { if (new ClrTypeName(fcsAttribute.AttributeType.QualifiedBaseName).Equals(clrName)) { result.Add(new FSharpAttributeInstance(fcsAttribute, psiModule)); } } return(result.ResultingList()); }
private IList<IDeclaration> GetPartialDeclarations([CanBeNull] IPsiSourceFile sourceFile) { var containingType = GetContainingType(); if (containingType == null) return EmptyList<IDeclaration>.InstanceList; var declaration = GetDeclaration(); if (declaration == null) return EmptyList<IDeclaration>.InstanceList; var list = new FrugalLocalList<IDeclaration>(); var declarations = sourceFile != null ? containingType.GetDeclarationsIn(sourceFile) : containingType.GetDeclarations(); foreach (var partDeclaration in declarations) { if (!(partDeclaration is IFSharpTypeElementDeclaration typeDeclaration)) continue; foreach (var member in typeDeclaration.MemberDeclarations) if (member.DeclaredName == declaration.DeclaredName && Equals(this, member.DeclaredElement)) list.Add(member); } return list.ResultingList(); }