| File: Compilation\DocumentationComments\DocumentationCommentCompiler.Event.vb | Web Access |
| Project: src\roslyn\src\Compilers\VisualBasic\Portable\Microsoft.CodeAnalysis.VisualBasic.vbproj (Microsoft.CodeAnalysis.VisualBasic) |
' Licensed to the .NET Foundation under one or more agreements. ' The .NET Foundation licenses this file to you under the MIT license. ' See the LICENSE file in the project root for more information. Imports System Imports System.Collections.Generic Imports System.Collections.Immutable Imports System.Diagnostics Imports System.Globalization Imports System.IO Imports System.Text Imports System.Runtime.InteropServices Imports System.Threading Imports Microsoft.CodeAnalysis.Collections Imports Microsoft.CodeAnalysis.PooledObjects Imports Microsoft.CodeAnalysis.VisualBasic Imports Microsoft.CodeAnalysis.VisualBasic.Symbols Imports Microsoft.CodeAnalysis.VisualBasic.Syntax Namespace Microsoft.CodeAnalysis.VisualBasic Partial Public Class VisualBasicCompilation Partial Friend Class DocumentationCommentCompiler Inherits VisualBasicSymbolVisitor Public Overrides Sub VisitEvent(symbol As EventSymbol) Me._cancellationToken.ThrowIfCancellationRequested() If Not ShouldSkipSymbol(symbol) Then Dim sourceEvent = TryCast(symbol, SourceEventSymbol) If sourceEvent IsNot Nothing Then WriteDocumentationCommentForEvent(sourceEvent) End If End If End Sub Private Sub WriteDocumentationCommentForEvent([event] As SourceEventSymbol) Dim docCommentTrivia As DocumentationCommentTriviaSyntax = TryGetDocCommentTriviaAndGenerateDiagnostics( [event].SyntaxReference.GetVisualBasicSyntax(Me._cancellationToken)) If docCommentTrivia Is Nothing Then Return End If Dim wellKnownElementNodes As New Dictionary(Of WellKnownTag, ArrayBuilder(Of XmlNodeSyntax)) Dim docCommentXml As String = GetDocumentationCommentForSymbol([event], docCommentTrivia, wellKnownElementNodes) ' No further processing If docCommentXml Is Nothing Then FreeWellKnownElementNodes(wellKnownElementNodes) Return End If If docCommentTrivia.SyntaxTree.ReportDocumentationCommentDiagnostics OrElse _writer.IsSpecified Then Dim symbolName As String = GetSymbolName([event]) ' Duplicate top-level well known tags ReportWarningsForDuplicatedTags(wellKnownElementNodes, isEvent:=True) ' <exception> ReportWarningsForExceptionTags(wellKnownElementNodes) ' <returns> ReportIllegalWellKnownTagIfAny(WellKnownTag.Returns, wellKnownElementNodes, symbolName) ' <param> & <paramref> Dim parameters As ImmutableArray(Of ParameterSymbol) = ImmutableArray(Of ParameterSymbol).Empty Dim delegateType = TryCast([event].Type, NamedTypeSymbol) If delegateType IsNot Nothing Then Dim invokeMethod As MethodSymbol = delegateType.DelegateInvokeMethod If invokeMethod IsNot Nothing Then parameters = invokeMethod.Parameters End If End If ReportWarningsForParamAndParamRefTags(wellKnownElementNodes, symbolName, parameters) ' <value> ReportIllegalWellKnownTagIfAny(WellKnownTag.Value, wellKnownElementNodes, symbolName) ' <typeparam> ReportIllegalWellKnownTagIfAny(WellKnownTag.TypeParam, wellKnownElementNodes, symbolName) ' <typeparamref> ReportWarningsForTypeParamRefTags(wellKnownElementNodes, symbolName, [event], docCommentTrivia.SyntaxTree) End If FreeWellKnownElementNodes(wellKnownElementNodes) WriteDocumentationCommentForSymbol(docCommentXml) End Sub End Class End Class End Namespace