/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Compilers/VisualBasic/Portable/Errors/MessageProvider.vb
642 строки
25 KB
Tomáš Matoušek
EnC: Block additions to MethodImpl table when targeting .NET Framework (#81304)
03 дек 2025, 23:18
Не верифицирован
03 дек 2025, 23:18
264f04f
Код
Авторство
О чём код?
' 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.Globalization Imports System.Threading Imports Microsoft.CodeAnalysis.VisualBasic Imports Microsoft.CodeAnalysis.VisualBasic.Syntax Namespace Microsoft.CodeAnalysis.VisualBasic Friend NotInheritable Class MessageProvider Inherits CommonMessageProvider Public Shared ReadOnly Instance As MessageProvider = New MessageProvider() Private Sub New() End Sub Public Overrides ReadOnly Property CodePrefix As String Get ' VB uses "BC" (for Basic Compiler) to identifier its error messages. Return "BC" End Get End Property Public Overrides Function LoadMessage(code As Integer, language As CultureInfo) As String Return ErrorFactory.IdToString(DirectCast(code, ERRID), language) End Function Public Overrides Function GetMessageFormat(code As Integer) As LocalizableString Return ErrorFactory.GetMessageFormat(DirectCast(code, ERRID)) End Function Public Overrides Function GetDescription(code As Integer) As LocalizableString Return ErrorFactory.GetDescription(DirectCast(code, ERRID)) End Function Public Overrides Function GetTitle(code As Integer) As LocalizableString Return ErrorFactory.GetTitle(DirectCast(code, ERRID)) End Function Public Overrides Function GetHelpLink(code As Integer) As String Return ErrorFactory.GetHelpLink(DirectCast(code, ERRID)) End Function Public Overrides Function GetCategory(code As Integer) As String Return ErrorFactory.GetCategory(DirectCast(code, ERRID)) End Function Public Overrides Function GetSeverity(code As Integer) As DiagnosticSeverity Dim errid = DirectCast(code, ERRID) If errid = ERRID.Void Then Return InternalDiagnosticSeverity.Void ElseIf errid = ERRID.Unknown Then Return InternalDiagnosticSeverity.Unknown ElseIf ErrorFacts.IsWarning(errid) Then Return DiagnosticSeverity.Warning ElseIf ErrorFacts.IsInfo(errid) Then Return DiagnosticSeverity.Info ElseIf ErrorFacts.IsHidden(errid) Then Return DiagnosticSeverity.Hidden Else Return DiagnosticSeverity.Error End If End Function Public Overrides Function GetWarningLevel(code As Integer) As Integer Dim errorId = DirectCast(code, ERRID) If ErrorFacts.IsWarning(errorId) AndAlso code <> ERRID.WRN_BadSwitch AndAlso code <> ERRID.WRN_NoConfigInResponseFile AndAlso code <> ERRID.WRN_IgnoreModuleManifest Then Return 1 ElseIf ErrorFacts.IsInfo(errorId) OrElse ErrorFacts.IsHidden(errorId) ' Info and hidden diagnostics Return 1 Else Return 0 End If End Function Public Overrides ReadOnly Property ErrorCodeType As Type Get Return GetType(ERRID) End Get End Property Public Overrides Function CreateDiagnostic(code As Integer, location As Location, ParamArray args() As Object) As Diagnostic Return New VBDiagnostic(ErrorFactory.ErrorInfo(CType(code, ERRID), args), location) End Function Public Overrides Function CreateDiagnostic(info As DiagnosticInfo) As Diagnostic Return New VBDiagnostic(info, Location.None) End Function Public Overrides Function GetErrorDisplayString(symbol As ISymbol) As String ' show extra info for assembly if possible such as version, public key token etc. If symbol.Kind = SymbolKind.Assembly OrElse symbol.Kind = SymbolKind.Namespace Then Return symbol.ToString() End If Return SymbolDisplay.ToDisplayString(symbol, SymbolDisplayFormat.VisualBasicShortErrorMessageFormat) End Function Public Overrides Function GetIsEnabledByDefault(code As Integer) As Boolean Return True End Function ' Given a message identifier (e.g., CS0219), severity, warning as error and a culture, ' get the entire prefix (e.g., "error BC42024:" for VB) used on error messages. Public Overrides Function GetMessagePrefix(id As String, severity As DiagnosticSeverity, isWarningAsError As Boolean, culture As CultureInfo) As String Return String.Format(culture, "{0} {1}", If(severity = DiagnosticSeverity.Error OrElse isWarningAsError, "error", "warning"), id) End Function Public Overrides Function GetDiagnosticReport(diagnosticInfo As DiagnosticInfo, options As CompilationOptions) As ReportDiagnostic Dim hasSourceSuppression = False Return VisualBasicDiagnosticFilter.GetDiagnosticReport(diagnosticInfo.Severity, True, diagnosticInfo.MessageIdentifier, Location.None, diagnosticInfo.CustomTags, options.GeneralDiagnosticOption, options.SpecificDiagnosticOptions, options.SyntaxTreeOptionsProvider, CancellationToken.None, ' We don't have a tree so there's no need to pass cancellation to the SyntaxTreeOptionsProvider hasSourceSuppression) End Function #If DEBUG Then Friend Overrides Function ShouldAssertExpectedMessageArgumentsLength(errorCode As Integer) As Boolean ' Consider enabling. Return False End Function #End If Public Overrides ReadOnly Property ERR_FailedToCreateTempFile As Integer Get Return ERRID.ERR_UnableToCreateTempFile End Get End Property Public Overrides ReadOnly Property ERR_MultipleAnalyzerConfigsInSameDir As Integer Get Return ERRID.ERR_MultipleAnalyzerConfigsInSameDir End Get End Property ' command line: Public Overrides ReadOnly Property ERR_ExpectedSingleScript As Integer Get Return ERRID.ERR_ExpectedSingleScript End Get End Property Public Overrides ReadOnly Property ERR_OpenResponseFile As Integer Get Return ERRID.ERR_NoResponseFile End Get End Property Public Overrides ReadOnly Property ERR_InvalidPathMap As Integer Get Return ERRID.ERR_InvalidPathMap End Get End Property Public Overrides ReadOnly Property FTL_InvalidInputFileName As Integer Get Return ERRID.FTL_InvalidInputFileName End Get End Property Public Overrides ReadOnly Property ERR_FileNotFound As Integer Get Return ERRID.ERR_FileNotFound End Get End Property Public Overrides ReadOnly Property ERR_NoSourceFile As Integer Get Return ERRID.ERR_BadModuleFile1 End Get End Property Public Overrides ReadOnly Property ERR_CantOpenFileWrite As Integer Get Return ERRID.ERR_CantOpenFileWrite End Get End Property Public Overrides ReadOnly Property ERR_OutputWriteFailed As Integer Get Return ERRID.ERR_CantOpenFileWrite End Get End Property Public Overrides ReadOnly Property WRN_NoConfigNotOnCommandLine As Integer Get Return ERRID.WRN_NoConfigInResponseFile End Get End Property Public Overrides ReadOnly Property ERR_BinaryFile As Integer Get Return ERRID.ERR_BinaryFile End Get End Property Public Overrides ReadOnly Property WRN_AnalyzerCannotBeCreated As Integer Get Return ERRID.WRN_AnalyzerCannotBeCreated End Get End Property Public Overrides ReadOnly Property WRN_NoAnalyzerInAssembly As Integer Get Return ERRID.WRN_NoAnalyzerInAssembly End Get End Property Public Overrides ReadOnly Property WRN_UnableToLoadAnalyzer As Integer Get Return ERRID.WRN_UnableToLoadAnalyzer End Get End Property Public Overrides ReadOnly Property WRN_AnalyzerReferencesFramework As Integer Get Return ERRID.WRN_AnalyzerReferencesFramework End Get End Property Public Overrides ReadOnly Property WRN_AnalyzerReferencesNewerCompiler As Integer Get Return ERRID.WRN_AnalyzerReferencesNewerCompiler End Get End Property Public Overrides ReadOnly Property WRN_DuplicateAnalyzerReference As Integer Get Return ERRID.WRN_DuplicateAnalyzerReference End Get End Property Public Overrides ReadOnly Property INF_UnableToLoadSomeTypesInAnalyzer As Integer Get Return ERRID.INF_UnableToLoadSomeTypesInAnalyzer End Get End Property Public Overrides ReadOnly Property ERR_CantReadRulesetFile As Integer Get Return ERRID.ERR_CantReadRulesetFile End Get End Property Public Overrides ReadOnly Property ERR_CompileCancelled As Integer Get ' TODO: Add an error code for CompileCancelled Return ERRID.ERR_None End Get End Property ' parse options: Public Overrides ReadOnly Property ERR_BadSourceCodeKind As Integer Get Return ERRID.ERR_BadSourceCodeKind End Get End Property Public Overrides ReadOnly Property ERR_BadDocumentationMode As Integer Get Return ERRID.ERR_BadDocumentationMode End Get End Property ' compilation options: Public Overrides ReadOnly Property ERR_BadCompilationOptionValue As Integer Get Return ERRID.ERR_InvalidSwitchValue End Get End Property Public Overrides ReadOnly Property ERR_MutuallyExclusiveOptions As Integer Get Return ERRID.ERR_MutuallyExclusiveOptions End Get End Property ' emit options: Public Overrides ReadOnly Property ERR_InvalidDebugInformationFormat As Integer Get Return ERRID.ERR_InvalidDebugInformationFormat End Get End Property Public Overrides ReadOnly Property ERR_InvalidOutputName As Integer Get Return ERRID.ERR_InvalidOutputName End Get End Property Public Overrides ReadOnly Property ERR_InvalidFileAlignment As Integer Get Return ERRID.ERR_InvalidFileAlignment End Get End Property Public Overrides ReadOnly Property ERR_InvalidSubsystemVersion As Integer Get Return ERRID.ERR_InvalidSubsystemVersion End Get End Property Public Overrides ReadOnly Property ERR_InvalidHashAlgorithmName As Integer Get Return ERRID.ERR_InvalidHashAlgorithmName End Get End Property Public Overrides ReadOnly Property ERR_InvalidInstrumentationKind As Integer Get Return ERRID.ERR_InvalidInstrumentationKind End Get End Property ' reference manager: Public Overrides ReadOnly Property ERR_MetadataFileNotAssembly As Integer Get Return ERRID.ERR_MetaDataIsNotAssembly End Get End Property Public Overrides ReadOnly Property ERR_MetadataFileNotModule As Integer Get Return ERRID.ERR_MetaDataIsNotModule End Get End Property Public Overrides ReadOnly Property ERR_InvalidAssemblyMetadata As Integer Get Return ERRID.ERR_BadMetaDataReference1 End Get End Property Public Overrides ReadOnly Property ERR_InvalidModuleMetadata As Integer Get Return ERRID.ERR_BadModuleFile1 End Get End Property Public Overrides ReadOnly Property ERR_ErrorOpeningAssemblyFile As Integer Get Return ERRID.ERR_BadRefLib1 End Get End Property Public Overrides ReadOnly Property ERR_ErrorOpeningModuleFile As Integer Get Return ERRID.ERR_BadModuleFile1 End Get End Property Public Overrides ReadOnly Property ERR_MetadataFileNotFound As Integer Get Return ERRID.ERR_LibNotFound End Get End Property Public Overrides ReadOnly Property ERR_MetadataReferencesNotSupported As Integer Get Return ERRID.ERR_MetadataReferencesNotSupported End Get End Property Public Overrides ReadOnly Property ERR_LinkedNetmoduleMetadataMustProvideFullPEImage As Integer Get Return ERRID.ERR_LinkedNetmoduleMetadataMustProvideFullPEImage End Get End Property Public Overrides Sub ReportDuplicateMetadataReferenceStrong(diagnostics As DiagnosticBag, location As Location, reference As MetadataReference, identity As AssemblyIdentity, equivalentReference As MetadataReference, equivalentIdentity As AssemblyIdentity) diagnostics.Add(ERRID.ERR_DuplicateReferenceStrong, DirectCast(location, Location), If(reference.Display, identity.GetDisplayName()), If(equivalentReference.Display, equivalentIdentity.GetDisplayName())) End Sub Public Overrides Sub ReportDuplicateMetadataReferenceWeak(diagnostics As DiagnosticBag, location As Location, reference As MetadataReference, identity As AssemblyIdentity, equivalentReference As MetadataReference, equivalentIdentity As AssemblyIdentity) diagnostics.Add(ERRID.ERR_DuplicateReference2, DirectCast(location, Location), identity.Name, If(equivalentReference.Display, equivalentIdentity.GetDisplayName())) End Sub ' signing: Public Overrides ReadOnly Property ERR_CantReadResource As Integer Get Return ERRID.ERR_UnableToOpenResourceFile1 End Get End Property Public Overrides ReadOnly Property ERR_PublicKeyFileFailure As Integer Get Return ERRID.ERR_PublicKeyFileFailure End Get End Property Public Overrides ReadOnly Property ERR_PublicKeyContainerFailure As Integer Get Return ERRID.ERR_PublicKeyContainerFailure End Get End Property Public Overrides ReadOnly Property ERR_OptionMustBeAbsolutePath As Integer Get Return ERRID.ERR_OptionMustBeAbsolutePath End Get End Property ' resources: Public Overrides ReadOnly Property ERR_CantOpenWin32Resource As Integer Get Return ERRID.ERR_UnableToOpenResourceFile1 'TODO: refine (DevDiv #12914) End Get End Property Public Overrides ReadOnly Property ERR_CantOpenWin32Manifest As Integer Get Return ERRID.ERR_UnableToReadUacManifest2 End Get End Property Public Overrides ReadOnly Property ERR_CantOpenWin32Icon As Integer Get Return ERRID.ERR_UnableToOpenResourceFile1 'TODO: refine (DevDiv #12914) End Get End Property Public Overrides ReadOnly Property ERR_ErrorBuildingWin32Resource As Integer Get Return ERRID.ERR_ErrorCreatingWin32ResourceFile End Get End Property Public Overrides ReadOnly Property ERR_BadWin32Resource As Integer Get Return ERRID.ERR_ErrorCreatingWin32ResourceFile End Get End Property Public Overrides ReadOnly Property ERR_ResourceFileNameNotUnique As Integer Get Return ERRID.ERR_DuplicateResourceFileName1 End Get End Property Public Overrides ReadOnly Property ERR_ResourceNotUnique As Integer Get Return ERRID.ERR_DuplicateResourceName1 End Get End Property Public Overrides ReadOnly Property ERR_ResourceInModule As Integer Get Return ERRID.ERR_ResourceInModule End Get End Property ' pseudo-custom attributes Public Overrides ReadOnly Property ERR_PermissionSetAttributeFileReadError As Integer Get Return ERRID.ERR_PermissionSetAttributeFileReadError End Get End Property Public Overrides ReadOnly Property ERR_MethodImplAttributeAsyncCannotBeUsed As Integer Get Return ERRID.ERR_MethodImplAttributeAsyncCannotBeUsed End Get End Property Protected Overrides Sub ReportInvalidAttributeArgument(diagnostics As DiagnosticBag, attributeSyntax As SyntaxNode, parameterIndex As Integer, attribute As AttributeData) Dim node = DirectCast(attributeSyntax, AttributeSyntax) diagnostics.Add(ERRID.ERR_BadAttribute1, node.ArgumentList.Arguments(parameterIndex).GetLocation(), attribute.AttributeClass) End Sub Protected Overrides Sub ReportInvalidNamedArgument(diagnostics As DiagnosticBag, attributeSyntax As SyntaxNode, namedArgumentIndex As Integer, attributeClass As ITypeSymbol, parameterName As String) Dim node = DirectCast(attributeSyntax, AttributeSyntax) diagnostics.Add(ERRID.ERR_BadAttribute1, node.ArgumentList.Arguments(namedArgumentIndex).GetLocation(), attributeClass) End Sub Protected Overrides Sub ReportParameterNotValidForType(diagnostics As DiagnosticBag, attributeSyntax As SyntaxNode, namedArgumentIndex As Integer) Dim node = DirectCast(attributeSyntax, AttributeSyntax) diagnostics.Add(ERRID.ERR_ParameterNotValidForType, node.ArgumentList.Arguments(namedArgumentIndex).GetLocation()) End Sub Protected Overrides Sub ReportMarshalUnmanagedTypeNotValidForFields(diagnostics As DiagnosticBag, attributeSyntax As SyntaxNode, parameterIndex As Integer, unmanagedTypeName As String, attribute As AttributeData) Dim node = DirectCast(attributeSyntax, AttributeSyntax) diagnostics.Add(ERRID.ERR_MarshalUnmanagedTypeNotValidForFields, node.ArgumentList.Arguments(parameterIndex).GetLocation(), unmanagedTypeName) End Sub Protected Overrides Sub ReportMarshalUnmanagedTypeOnlyValidForFields(diagnostics As DiagnosticBag, attributeSyntax As SyntaxNode, parameterIndex As Integer, unmanagedTypeName As String, attribute As AttributeData) Dim node = DirectCast(attributeSyntax, AttributeSyntax) diagnostics.Add(ERRID.ERR_MarshalUnmanagedTypeOnlyValidForFields, node.ArgumentList.Arguments(parameterIndex).GetLocation(), unmanagedTypeName) End Sub Protected Overrides Sub ReportAttributeParameterRequired(diagnostics As DiagnosticBag, attributeSyntax As SyntaxNode, parameterName As String) Dim node = DirectCast(attributeSyntax, AttributeSyntax) diagnostics.Add(ERRID.ERR_AttributeParameterRequired1, node.Name.GetLocation(), parameterName) End Sub Protected Overrides Sub ReportAttributeParameterRequired(diagnostics As DiagnosticBag, attributeSyntax As SyntaxNode, parameterName1 As String, parameterName2 As String) Dim node = DirectCast(attributeSyntax, AttributeSyntax) diagnostics.Add(ERRID.ERR_AttributeParameterRequired2, node.Name.GetLocation(), parameterName1, parameterName2) End Sub ' PDB Writer Public Overrides ReadOnly Property ERR_EncodinglessSyntaxTree As Integer Get Return ERRID.ERR_EncodinglessSyntaxTree End Get End Property Public Overrides ReadOnly Property WRN_PdbUsingNameTooLong As Integer Get Return ERRID.WRN_PdbUsingNameTooLong End Get End Property Public Overrides ReadOnly Property WRN_PdbLocalNameTooLong As Integer Get Return ERRID.WRN_PdbLocalNameTooLong End Get End Property Public Overrides ReadOnly Property ERR_PdbWritingFailed As Integer Get Return ERRID.ERR_PDBWritingFailed End Get End Property ' PE Writer Public Overrides ReadOnly Property ERR_MetadataNameTooLong As Integer Get Return ERRID.ERR_TooLongMetadataName End Get End Property Public Overrides ReadOnly Property ERR_EncReferenceToAddedMember As Integer Get Return ERRID.ERR_EncReferenceToAddedMember End Get End Property Public Overrides ReadOnly Property ERR_TooManyUserStrings As Integer Get Return ERRID.ERR_TooManyUserStrings End Get End Property Public Overrides ReadOnly Property ERR_TooManyUserStrings_RestartRequired As Integer Get Return ERRID.ERR_TooManyUserStrings_RestartRequired End Get End Property Public Overrides ReadOnly Property ERR_PeWritingFailure As Integer Get Return ERRID.ERR_PeWritingFailure End Get End Property Public Overrides ReadOnly Property ERR_ModuleEmitFailure As Integer Get Return ERRID.ERR_ModuleEmitFailure End Get End Property Public Overrides ReadOnly Property ERR_EncUpdateFailedMissingSymbol As Integer Get Return ERRID.ERR_EncUpdateFailedMissingSymbol End Get End Property Public Overrides ReadOnly Property ERR_BadAssemblyName As Integer Get Return ERRID.ERR_BadAssemblyName End Get End Property Public Overrides ReadOnly Property ERR_InvalidDebugInfo As Integer Get Return ERRID.ERR_InvalidDebugInfo End Get End Property Public Overrides ReadOnly Property ERR_FunctionPointerTypesInAttributeNotSupported As Integer Get Return ERRID.ERR_TooLongOrComplexExpression End Get End Property Public Overrides ReadOnly Property ERR_DataSectionStringLiteralHashCollision As Integer Get Throw ExceptionUtilities.Unreachable End Get End Property Public Overrides ReadOnly Property ERR_EncUpdateRequiresEmittingExplicitInterfaceImplementationNotSupportedByTheRuntime As Integer Get Return ERRID.ERR_EncUpdateRequiresEmittingExplicitInterfaceImplementationNotSupportedByTheRuntime End Get End Property ' Generators Public Overrides ReadOnly Property WRN_GeneratorFailedDuringInitialization As Integer Get Return ERRID.WRN_GeneratorFailedDuringInitialization End Get End Property Public Overrides ReadOnly Property WRN_GeneratorFailedDuringGeneration As Integer Get Return ERRID.WRN_GeneratorFailedDuringGeneration End Get End Property Public Overrides ReadOnly Property WRN_ByValArraySizeConstRequired As Integer? Get Return Nothing End Get End Property End Class End Namespace