public static TypeAugmentation IsTypePartDeclaration([NotNull] ITypeExtensionDeclaration extensionDeclaration) { var extNameInfo = new NameAndParametersCound(extensionDeclaration.SourceName, extensionDeclaration.TypeParameters.Count); var declaredTypeNames = new Dictionary <NameAndParametersCound, TypeAugmentation>(); var moduleDeclaration = extensionDeclaration.GetContainingNode <IModuleLikeDeclaration>() .NotNull("moduleDeclaration != null"); foreach (var member in moduleDeclaration.MembersEnumerable) { if (member is ITypeExtensionDeclaration || !(member is IFSharpTypeDeclaration declaration)) { continue; } var sourceName = declaration.SourceName; if (sourceName == SharedImplUtil.MISSING_DECLARATION_NAME) { continue; } var compiledName = declaration.CompiledName; if (compiledName == SharedImplUtil.MISSING_DECLARATION_NAME) { continue; } var parametersCount = declaration.TypeParameters.Count; var augmentationInfo = TypeAugmentation.NewTypePart(compiledName, parametersCount, declaration.TypePartKind); var nameInfo = new NameAndParametersCound(sourceName, parametersCount); declaredTypeNames[nameInfo] = augmentationInfo; } return(declaredTypeNames.TryGetValue(extNameInfo, out var typeAugmentation) ? typeAugmentation : TypeAugmentation.Extension); }
protected override void ClearCachedData() { base.ClearCachedData(); myTypeAugmentation = null; }