protected override void BuildDelegateDeclaration(INamedTypeSymbol typeSymbol, _VSOBJDESCOPTIONS options) { Debug.Assert(typeSymbol.TypeKind == TypeKind.Delegate); BuildTypeModifiers(typeSymbol); AddText("delegate "); var delegateInvokeMethod = typeSymbol.DelegateInvokeMethod; AddTypeLink(delegateInvokeMethod.ReturnType, LinkFlags.None); AddText(" "); var typeQualificationStyle = (options & _VSOBJDESCOPTIONS.ODO_USEFULLNAME) != 0 ? SymbolDisplayTypeQualificationStyle.NameAndContainingTypesAndNamespaces : SymbolDisplayTypeQualificationStyle.NameOnly; var typeNameFormat = new SymbolDisplayFormat( typeQualificationStyle: typeQualificationStyle, genericsOptions: SymbolDisplayGenericsOptions.IncludeTypeParameters | SymbolDisplayGenericsOptions.IncludeVariance); AddName(typeSymbol.ToDisplayString(typeNameFormat)); AddText("("); BuildParameterList(delegateInvokeMethod.Parameters); AddText(")"); if (typeSymbol.IsGenericType) { BuildGenericConstraints(typeSymbol); } }
public override void FillDescription(_VSOBJDESCOPTIONS flags, IVsObjectBrowserDescription3 description) { description.ClearDescriptionText(); FunctionScopeNode funcScope = ScopeNode as FunctionScopeNode; if (funcScope != null) { description.AddDescriptionText3("def ", VSOBDESCRIPTIONSECTION.OBDS_MISC, null); var def = funcScope.Definition; GetFunctionDescription(def, (text, kind, arg) => { description.AddDescriptionText3(text, kind, arg); }); description.AddDescriptionText3(null, VSOBDESCRIPTIONSECTION.OBDS_ENDDECL, null); if (def.Body.Documentation != null) { description.AddDescriptionText3(" " + def.Body.Documentation, VSOBDESCRIPTIONSECTION.OBDS_MISC, null); } } else { var classScope = ScopeNode as ClassScopeNode; if (classScope != null) { FillClassDescription(description, classScope); } else { var assign = ScopeNode as AssignmentScopeNode; if (assign != null) { description.AddDescriptionText3("field ", VSOBDESCRIPTIONSECTION.OBDS_MISC, null); description.AddDescriptionText3(assign.Name, VSOBDESCRIPTIONSECTION.OBDS_NAME, null); description.AddDescriptionText3("\n", VSOBDESCRIPTIONSECTION.OBDS_MISC, null); description.AddDescriptionText3(null, VSOBDESCRIPTIONSECTION.OBDS_ENDDECL, null); } } } }
internal bool TryFillDescription(ObjectListItem listItem, IVsObjectBrowserDescription3 description, _VSOBJDESCOPTIONS options) { var project = GetProject(listItem); if (project == null) { return false; } return CreateDescriptionBuilder(description, listItem, project).TryBuild(options); }
private void BuildMember(MemberListItem memberListItem, _VSOBJDESCOPTIONS options) { var compilation = GetCompilation(); if (compilation == null) { return; } var symbol = memberListItem.ResolveTypedSymbol(compilation); if (symbol == null) { return; } switch (symbol.Kind) { case SymbolKind.Method: BuildMethodDeclaration((IMethodSymbol)symbol, options); break; case SymbolKind.Field: BuildFieldDeclaration((IFieldSymbol)symbol, options); break; case SymbolKind.Property: BuildPropertyDeclaration((IPropertySymbol)symbol, options); break; case SymbolKind.Event: BuildEventDeclaration((IEventSymbol)symbol, options); break; default: Debug.Fail("Unsupported member kind: " + symbol.Kind.ToString()); return; } AddEndDeclaration(); BuildMemberOf(symbol.ContainingType, options); BuildXmlDocumentation(symbol, compilation, options); }
internal bool TryBuild(_VSOBJDESCOPTIONS options) { var projectListItem = _listItem as ProjectListItem; if (projectListItem != null) { BuildProject(projectListItem); return(true); } var referenceListItem = _listItem as ReferenceListItem; if (referenceListItem != null) { BuildReference(referenceListItem); return(true); } var namespaceListItem = _listItem as NamespaceListItem; if (namespaceListItem != null) { BuildNamespace(namespaceListItem, options); return(true); } var typeListItem = _listItem as TypeListItem; if (typeListItem != null) { BuildType(typeListItem, options); return(true); } var memberListItem = _listItem as MemberListItem; if (memberListItem != null) { BuildMember(memberListItem, options); return(true); } return(false); }
public override void FillDescription(_VSOBJDESCOPTIONS flags, IVsObjectBrowserDescription3 description) { description.ClearDescriptionText(); // TODO: //FunctionScopeNode funcScope = ScopeNode as FunctionScopeNode; //if (funcScope != null) { // description.AddDescriptionText3("def ", VSOBDESCRIPTIONSECTION.OBDS_MISC, null); // var def = funcScope.Definition; // GetFunctionDescription(def, (text, kind, arg) => { // description.AddDescriptionText3(text, kind, arg); // }); // description.AddDescriptionText3(null, VSOBDESCRIPTIONSECTION.OBDS_ENDDECL, null); // if (def.Body.Documentation != null) { // description.AddDescriptionText3(" " + def.Body.Documentation, VSOBDESCRIPTIONSECTION.OBDS_MISC, null); // } //} else { description.AddDescriptionText3("class ", VSOBDESCRIPTIONSECTION.OBDS_MISC, null); description.AddDescriptionText3(ScopeNode.Name, VSOBDESCRIPTIONSECTION.OBDS_NAME, null); // } }
private void BuildMemberOf(ISymbol containingSymbol, _VSOBJDESCOPTIONS options) { if (containingSymbol is INamespaceSymbol && ((INamespaceSymbol)containingSymbol).IsGlobalNamespace) { containingSymbol = containingSymbol.ContainingAssembly; } var memberOfText = ServicesVSResources.Library_MemberOf; var specifier = "{0}"; var index = memberOfText.IndexOf(specifier); if (index < 0) { Debug.Fail("MemberOf string resource is incorrect."); return; } var left = memberOfText.Substring(0, index); var right = memberOfText.Substring(index + specifier.Length); AddIndent(); AddText(left); if (containingSymbol is IAssemblySymbol) { AddAssemblyLink((IAssemblySymbol)containingSymbol); } else if (containingSymbol is ITypeSymbol) { AddTypeLink((ITypeSymbol)containingSymbol, LinkFlags.SplitNamespaceAndType | LinkFlags.ExpandPredefinedTypes); } else if (containingSymbol is INamespaceSymbol) { AddNamespaceLink((INamespaceSymbol)containingSymbol); } AddText(right); AddEndDeclaration(); }
private void BuildNamespace(NamespaceListItem namespaceListItem, _VSOBJDESCOPTIONS options) { var compilation = GetCompilation(); if (compilation == null) { return; } var namespaceSymbol = namespaceListItem.ResolveTypedSymbol(compilation); if (namespaceSymbol == null) { return; } BuildNamespaceDeclaration(namespaceSymbol, options); AddEndDeclaration(); BuildMemberOf(namespaceSymbol.ContainingAssembly, options); }
protected override void BuildDelegateDeclaration( INamedTypeSymbol typeSymbol, _VSOBJDESCOPTIONS options ) { Debug.Assert(typeSymbol.TypeKind == TypeKind.Delegate); BuildTypeModifiers(typeSymbol); AddText("delegate "); var delegateInvokeMethod = typeSymbol.DelegateInvokeMethod; AddTypeLink(delegateInvokeMethod.ReturnType, LinkFlags.None); AddText(" "); var typeQualificationStyle = (options & _VSOBJDESCOPTIONS.ODO_USEFULLNAME) != 0 ? SymbolDisplayTypeQualificationStyle.NameAndContainingTypesAndNamespaces : SymbolDisplayTypeQualificationStyle.NameOnly; var typeNameFormat = new SymbolDisplayFormat( typeQualificationStyle: typeQualificationStyle, genericsOptions: SymbolDisplayGenericsOptions.IncludeTypeParameters | SymbolDisplayGenericsOptions.IncludeVariance ); AddName(typeSymbol.ToDisplayString(typeNameFormat)); AddText("("); BuildParameterList(delegateInvokeMethod.Parameters); AddText(")"); if (typeSymbol.IsGenericType) { BuildGenericConstraints(typeSymbol); } }
public override void FillDescription(_VSOBJDESCOPTIONS flags, IVsObjectBrowserDescription3 description) { description.ClearDescriptionText(); foreach (var value in _value.Values) { foreach (var desc in value.description) { VSOBDESCRIPTIONSECTION kind; switch (desc.kind) { case "enddecl": kind = VSOBDESCRIPTIONSECTION.OBDS_ENDDECL; break; case "name": kind = VSOBDESCRIPTIONSECTION.OBDS_NAME; break; case "param": kind = VSOBDESCRIPTIONSECTION.OBDS_PARAM; break; case "comma": kind = VSOBDESCRIPTIONSECTION.OBDS_COMMA; break; default: kind = VSOBDESCRIPTIONSECTION.OBDS_MISC; break; } description.AddDescriptionText3(desc.text, kind, null); } } }
protected abstract void BuildEventDeclaration(IEventSymbol eventSymbol, _VSOBJDESCOPTIONS options);
protected abstract void BuildFieldDeclaration(IFieldSymbol fieldSymbol, _VSOBJDESCOPTIONS options);
protected override void BuildEventDeclaration(IEventSymbol eventSymbol, _VSOBJDESCOPTIONS options) { BuildMemberModifiers(eventSymbol); AddText("event "); AddTypeLink(eventSymbol.Type, LinkFlags.None); AddText(" "); AddName(eventSymbol.Name); }
protected override void BuildFieldDeclaration(IFieldSymbol fieldSymbol, _VSOBJDESCOPTIONS options) { BuildMemberModifiers(fieldSymbol); if (fieldSymbol.ContainingType.TypeKind != TypeKind.Enum) { AddTypeLink(fieldSymbol.Type, LinkFlags.None); AddText(" "); } AddName(fieldSymbol.Name); }
protected override void buildDescription(_VSOBJDESCOPTIONS flags, IVsObjectBrowserDescription3 description) { description.ClearDescriptionText(); // string descText = this.Name; // string namesp = ""; string className = ""; if (member != null) { if (member.Parent != null) { if (member.Parent is IXType) { namesp = ((IXType)member.Parent).Namespace; className = ((IXType)member.Parent).Name; } } // string modifier = ""; string access = ""; if ((member is XTypeDefinition) && (member.Kind != Kind.Namespace)) { modifier = getModifierString(((XTypeDefinition)member).Modifiers); access = getAccessString(((XTypeDefinition)member).Visibility); } else if ((member is XMemberDefinition) && ((member.Kind != Kind.Function) && (member.Kind != Kind.Procedure))) { modifier = getModifierString(((XMemberDefinition)member).Modifiers); access = getAccessString(((XMemberDefinition)member).Visibility); } // if (!String.IsNullOrEmpty(modifier)) { description.AddDescriptionText3(modifier, VSOBDESCRIPTIONSECTION.OBDS_MISC, null); } // if (!String.IsNullOrEmpty(access)) { description.AddDescriptionText3(access, VSOBDESCRIPTIONSECTION.OBDS_MISC, null); } // descText = member.Kind.DisplayName().ToUpper() + " "; description.AddDescriptionText3(descText, VSOBDESCRIPTIONSECTION.OBDS_MISC, null); descText = member.Name; description.AddDescriptionText3(descText, VSOBDESCRIPTIONSECTION.OBDS_NAME, null); // Parameters ? if (this.NodeType == LibraryNodeType.Members) { if (((XMemberDefinition)member).HasParameters) { descText = "("; description.AddDescriptionText3(descText, VSOBDESCRIPTIONSECTION.OBDS_MISC, null); // int paramNum = 1; foreach (XVariable param in ((XMemberDefinition)member).Parameters) { descText = param.Name + " AS "; description.AddDescriptionText3(descText, VSOBDESCRIPTIONSECTION.OBDS_PARAM, null); descText = param.TypeName; // IVsNavInfo navInfo = buildNavInfo(member.File, param.TypeName); // description.AddDescriptionText3(descText, VSOBDESCRIPTIONSECTION.OBDS_TYPE, navInfo); // Need a comma ? if (paramNum < ((XMemberDefinition)member).ParameterCount) { paramNum++; descText = ","; description.AddDescriptionText3(descText, VSOBDESCRIPTIONSECTION.OBDS_COMMA, null); } } descText = ")"; description.AddDescriptionText3(descText, VSOBDESCRIPTIONSECTION.OBDS_MISC, null); } } if (member.Kind.HasReturnType()) { descText = " AS "; description.AddDescriptionText3(descText, VSOBDESCRIPTIONSECTION.OBDS_MISC, null); descText = member.TypeName; description.AddDescriptionText3(descText, VSOBDESCRIPTIONSECTION.OBDS_TYPE, null); } // if ((member.Parent is XTypeDefinition) && (member.Parent.Kind == Kind.Class)) { descText = " CLASS "; description.AddDescriptionText3(descText, VSOBDESCRIPTIONSECTION.OBDS_MISC, null); descText = className; description.AddDescriptionText3(descText, VSOBDESCRIPTIONSECTION.OBDS_TYPE, null); } // description.AddDescriptionText3(null, VSOBDESCRIPTIONSECTION.OBDS_ENDDECL, null); } }
protected abstract void BuildNamespaceDeclaration(INamespaceSymbol namespaceSymbol, _VSOBJDESCOPTIONS options);
private void BuildType(TypeListItem typeListItem, _VSOBJDESCOPTIONS options) { var compilation = GetCompilation(); if (compilation == null) { return; } var symbol = typeListItem.ResolveTypedSymbol(compilation); if (symbol == null) { return; } if (symbol.TypeKind == TypeKind.Delegate) { BuildDelegateDeclaration(symbol, options); } else { BuildTypeDeclaration(symbol, options); } AddEndDeclaration(); BuildMemberOf(symbol.ContainingNamespace, options); BuildXmlDocumentation(symbol, compilation, options); }
private void BuildXmlDocumentation(ISymbol symbol, Compilation compilation, _VSOBJDESCOPTIONS options) { var documentationComment = symbol.GetDocumentationComment(expandIncludes: true, cancellationToken: CancellationToken.None); if (documentationComment == null) { return; } var formattingService = _project.LanguageServices.GetService <IDocumentationCommentFormattingService>(); if (formattingService == null) { return; } var emittedDocs = false; if (documentationComment.SummaryText != null) { AddLineBreak(); AddName(ServicesVSResources.Library_Summary); AddLineBreak(); AddText(formattingService.Format(documentationComment.SummaryText, compilation)); emittedDocs = true; } if (documentationComment.TypeParameterNames.Length > 0) { if (emittedDocs) { AddLineBreak(); } AddLineBreak(); AddName(ServicesVSResources.Library_TypeParameters); foreach (var typeParameterName in documentationComment.TypeParameterNames) { AddLineBreak(); var typeParameterText = documentationComment.GetTypeParameterText(typeParameterName); if (typeParameterText != null) { AddParam(typeParameterName); AddText(": "); AddText(formattingService.Format(typeParameterText, compilation)); emittedDocs = true; } } } if (documentationComment.ParameterNames.Length > 0) { if (emittedDocs) { AddLineBreak(); } AddLineBreak(); AddName(ServicesVSResources.Library_Parameters); foreach (var parameterName in documentationComment.ParameterNames) { AddLineBreak(); var parameterText = documentationComment.GetParameterText(parameterName); if (parameterText != null) { AddParam(parameterName); AddText(": "); AddText(formattingService.Format(parameterText, compilation)); emittedDocs = true; } } } if (ShowReturnsDocumentation(symbol) && documentationComment.ReturnsText != null) { if (emittedDocs) { AddLineBreak(); } AddLineBreak(); AddName(ServicesVSResources.Library_Returns); AddLineBreak(); AddText(formattingService.Format(documentationComment.ReturnsText, compilation)); emittedDocs = true; } if (documentationComment.RemarksText != null) { if (emittedDocs) { AddLineBreak(); } AddLineBreak(); AddName(ServicesVSResources.Library_Remarks); AddLineBreak(); AddText(formattingService.Format(documentationComment.RemarksText, compilation)); emittedDocs = true; } if (documentationComment.ExceptionTypes.Length > 0) { if (emittedDocs) { AddLineBreak(); } AddLineBreak(); AddName(ServicesVSResources.Library_Exceptions); foreach (var exceptionType in documentationComment.ExceptionTypes) { var exceptionTypeSymbol = DocumentationCommentId.GetFirstSymbolForDeclarationId(exceptionType, compilation) as INamedTypeSymbol; if (exceptionTypeSymbol != null) { AddLineBreak(); var exceptionTexts = documentationComment.GetExceptionTexts(exceptionType); if (exceptionTexts.Length == 0) { AddTypeLink(exceptionTypeSymbol, LinkFlags.None); } else { foreach (var exceptionText in exceptionTexts) { AddTypeLink(exceptionTypeSymbol, LinkFlags.None); AddText(": "); AddText(formattingService.Format(exceptionText, compilation)); } } emittedDocs = true; } } } }
public virtual void FillDescription(_VSOBJDESCOPTIONS flags, IVsObjectBrowserDescription3 description) { description.ClearDescriptionText(); description.AddDescriptionText3(_name, VSOBDESCRIPTIONSECTION.OBDS_NAME, null); }
protected virtual void FillDescription(_VSOBJDESCOPTIONS flagsArg, IVsObjectBrowserDescription3 description) { description.ClearDescriptionText(); description.AddDescriptionText3(symbolText, VSOBDESCRIPTIONSECTION.OBDS_NAME, null); }
protected virtual void buildDescription(_VSOBJDESCOPTIONS flags, IVsObjectBrowserDescription3 description) { description.ClearDescriptionText(); description.AddDescriptionText3(name, VSOBDESCRIPTIONSECTION.OBDS_NAME, null); }
public void FillDescription(_VSOBJDESCOPTIONS _VSOBJDESCOPTIONS, IVsObjectBrowserDescription3 pobDesc) { }
protected override void BuildPropertyDeclaration(IPropertySymbol propertySymbol, _VSOBJDESCOPTIONS options) { BuildMemberModifiers(propertySymbol); AddTypeLink(propertySymbol.Type, LinkFlags.None); AddText(" "); if (propertySymbol.IsIndexer) { AddName("this"); AddText("["); BuildParameterList(propertySymbol.Parameters); AddText("]"); } else { AddName(propertySymbol.Name); } AddText(" { "); if (propertySymbol.GetMethod != null) { if (propertySymbol.GetMethod.DeclaredAccessibility != propertySymbol.DeclaredAccessibility) { BuildAccessibility(propertySymbol.GetMethod); } AddText("get; "); } if (propertySymbol.SetMethod != null) { if (propertySymbol.SetMethod.DeclaredAccessibility != propertySymbol.DeclaredAccessibility) { BuildAccessibility(propertySymbol.SetMethod); } AddText("set; "); } AddText("}"); }
protected override void BuildTypeDeclaration(INamedTypeSymbol typeSymbol, _VSOBJDESCOPTIONS options) { BuildTypeModifiers(typeSymbol); switch (typeSymbol.TypeKind) { case TypeKind.Enum: AddText("enum "); break; case TypeKind.Struct: AddText("struct "); break; case TypeKind.Interface: AddText("interface "); break; case TypeKind.Class: AddText("class "); break; default: Debug.Fail("Invalid type kind encountered: " + typeSymbol.TypeKind.ToString()); break; } var typeNameFormat = new SymbolDisplayFormat( genericsOptions: SymbolDisplayGenericsOptions.IncludeTypeParameters | SymbolDisplayGenericsOptions.IncludeVariance); AddName(typeSymbol.ToDisplayString(typeNameFormat)); if (typeSymbol.TypeKind == TypeKind.Enum) { var underlyingType = typeSymbol.EnumUnderlyingType; if (underlyingType != null) { if (underlyingType.SpecialType != SpecialType.System_Int32) { AddText(" : "); AddTypeLink(underlyingType, LinkFlags.None); } } } else { var baseType = typeSymbol.BaseType; if (baseType != null) { if (baseType.SpecialType != SpecialType.System_Object && baseType.SpecialType != SpecialType.System_Delegate && baseType.SpecialType != SpecialType.System_MulticastDelegate && baseType.SpecialType != SpecialType.System_Enum && baseType.SpecialType != SpecialType.System_ValueType) { AddText(" : "); AddTypeLink(baseType, LinkFlags.None); } } } if (typeSymbol.IsGenericType) { BuildGenericConstraints(typeSymbol); } }
protected abstract void BuildTypeDeclaration(INamedTypeSymbol typeSymbol, _VSOBJDESCOPTIONS options);
internal bool TryFillDescription(ObjectListItem listItem, IVsObjectBrowserDescription3 description, _VSOBJDESCOPTIONS options) { var project = GetProject(listItem); if (project == null) { return(false); } return(CreateDescriptionBuilder(description, listItem, project).TryBuild(options)); }
public virtual void FillDescription(_VSOBJDESCOPTIONS _VSOBJDESCOPTIONS, IVsObjectBrowserDescription3 pobDesc) { }
protected abstract void BuildMethodDeclaration(IMethodSymbol methodSymbol, _VSOBJDESCOPTIONS options);
protected override void BuildNamespaceDeclaration(INamespaceSymbol namespaceSymbol, _VSOBJDESCOPTIONS options) { AddText("namespace "); AddName(namespaceSymbol.ToDisplayString()); }
protected abstract void BuildPropertyDeclaration(IPropertySymbol propertySymbol, _VSOBJDESCOPTIONS options);
private void BuildMemberOf(ISymbol containingSymbol, _VSOBJDESCOPTIONS options) { if (containingSymbol is INamespaceSymbol && ((INamespaceSymbol)containingSymbol).IsGlobalNamespace) { containingSymbol = containingSymbol.ContainingAssembly; } var memberOfText = ServicesVSResources.Library_MemberOf; const string specifier = "{0}"; var index = memberOfText.IndexOf(specifier, StringComparison.Ordinal); if (index < 0) { Debug.Fail("MemberOf string resource is incorrect."); return; } var left = memberOfText.Substring(0, index); var right = memberOfText.Substring(index + specifier.Length); AddIndent(); AddText(left); if (containingSymbol is IAssemblySymbol) { AddAssemblyLink((IAssemblySymbol)containingSymbol); } else if (containingSymbol is ITypeSymbol) { AddTypeLink((ITypeSymbol)containingSymbol, LinkFlags.SplitNamespaceAndType | LinkFlags.ExpandPredefinedTypes); } else if (containingSymbol is INamespaceSymbol) { AddNamespaceLink((INamespaceSymbol)containingSymbol); } AddText(right); AddEndDeclaration(); }
private void BuildXmlDocumentation(ISymbol symbol, Compilation compilation, _VSOBJDESCOPTIONS options) { var documentationComment = symbol.GetDocumentationComment(expandIncludes: true, cancellationToken: CancellationToken.None); if (documentationComment == null) { return; } var formattingService = _project.LanguageServices.GetService<IDocumentationCommentFormattingService>(); if (formattingService == null) { return; } var emittedDocs = false; if (documentationComment.SummaryText != null) { AddLineBreak(); AddName(ServicesVSResources.Library_Summary); AddLineBreak(); AddText(formattingService.Format(documentationComment.SummaryText, compilation)); emittedDocs = true; } if (documentationComment.TypeParameterNames.Length > 0) { if (emittedDocs) { AddLineBreak(); } AddLineBreak(); AddName(ServicesVSResources.Library_TypeParameters); foreach (var typeParameterName in documentationComment.TypeParameterNames) { AddLineBreak(); var typeParameterText = documentationComment.GetTypeParameterText(typeParameterName); if (typeParameterText != null) { AddParam(typeParameterName); AddText(": "); AddText(formattingService.Format(typeParameterText, compilation)); emittedDocs = true; } } } if (documentationComment.ParameterNames.Length > 0) { if (emittedDocs) { AddLineBreak(); } AddLineBreak(); AddName(ServicesVSResources.Library_Parameters); foreach (var parameterName in documentationComment.ParameterNames) { AddLineBreak(); var parameterText = documentationComment.GetParameterText(parameterName); if (parameterText != null) { AddParam(parameterName); AddText(": "); AddText(formattingService.Format(parameterText, compilation)); emittedDocs = true; } } } if (ShowReturnsDocumentation(symbol) && documentationComment.ReturnsText != null) { if (emittedDocs) { AddLineBreak(); } AddLineBreak(); AddName(ServicesVSResources.Library_Returns); AddLineBreak(); AddText(formattingService.Format(documentationComment.ReturnsText, compilation)); emittedDocs = true; } if (documentationComment.RemarksText != null) { if (emittedDocs) { AddLineBreak(); } AddLineBreak(); AddName(ServicesVSResources.Library_Remarks); AddLineBreak(); AddText(formattingService.Format(documentationComment.RemarksText, compilation)); emittedDocs = true; } if (documentationComment.ExceptionTypes.Length > 0) { if (emittedDocs) { AddLineBreak(); } AddLineBreak(); AddName(ServicesVSResources.Library_Exceptions); foreach (var exceptionType in documentationComment.ExceptionTypes) { var exceptionTypeSymbol = DocumentationCommentId.GetFirstSymbolForDeclarationId(exceptionType, compilation) as INamedTypeSymbol; if (exceptionTypeSymbol != null) { AddLineBreak(); var exceptionTexts = documentationComment.GetExceptionTexts(exceptionType); if (exceptionTexts.Length == 0) { AddTypeLink(exceptionTypeSymbol, LinkFlags.None); } else { foreach (var exceptionText in exceptionTexts) { AddTypeLink(exceptionTypeSymbol, LinkFlags.None); AddText(": "); AddText(formattingService.Format(exceptionText, compilation)); } } emittedDocs = true; } } } }
internal bool TryBuild(_VSOBJDESCOPTIONS options) { var projectListItem = _listItem as ProjectListItem; if (projectListItem != null) { BuildProject(projectListItem); return true; } var referenceListItem = _listItem as ReferenceListItem; if (referenceListItem != null) { BuildReference(referenceListItem); return true; } var namespaceListItem = _listItem as NamespaceListItem; if (namespaceListItem != null) { BuildNamespace(namespaceListItem, options); return true; } var typeListItem = _listItem as TypeListItem; if (typeListItem != null) { BuildType(typeListItem, options); return true; } var memberListItem = _listItem as MemberListItem; if (memberListItem != null) { BuildMember(memberListItem, options); return true; } return false; }
protected override void BuildMethodDeclaration(IMethodSymbol methodSymbol, _VSOBJDESCOPTIONS options) { BuildMemberModifiers(methodSymbol); if (methodSymbol.MethodKind != MethodKind.Constructor && methodSymbol.MethodKind != MethodKind.Destructor && methodSymbol.MethodKind != MethodKind.StaticConstructor && methodSymbol.MethodKind != MethodKind.Conversion) { AddTypeLink(methodSymbol.ReturnType, LinkFlags.None); AddText(" "); } if (methodSymbol.MethodKind == MethodKind.Conversion) { switch (methodSymbol.Name) { case WellKnownMemberNames.ImplicitConversionName: AddName("implicit operator "); break; case WellKnownMemberNames.ExplicitConversionName: AddName("explicit operator "); break; } AddTypeLink(methodSymbol.ReturnType, LinkFlags.None); } else { var methodNameFormat = new SymbolDisplayFormat( genericsOptions: SymbolDisplayGenericsOptions.IncludeTypeParameters | SymbolDisplayGenericsOptions.IncludeVariance); AddName(methodSymbol.ToDisplayString(methodNameFormat)); } AddText("("); if (methodSymbol.IsExtensionMethod) { AddText("this "); } BuildParameterList(methodSymbol.Parameters); AddText(")"); if (methodSymbol.IsGenericMethod) { BuildGenericConstraints(methodSymbol); } }
protected override bool TryFillDescription(uint index, _VSOBJDESCOPTIONS options, IVsObjectBrowserDescription3 description) { var listItem = GetListItem(index); return(this.LibraryManager.TryFillDescription(listItem, description, options)); }
protected virtual bool TryFillDescription(uint index, _VSOBJDESCOPTIONS options, IVsObjectBrowserDescription3 description) { return(false); }