提交 79ea2b42 编写于 作者: A AlekseyTs

Disable Obsolete checks for project level imports.

Fixes #4903.
上级 cca48c0b
......@@ -33,6 +33,15 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
Public Overrides Function GetSyntaxReference(node As VisualBasicSyntaxNode) As SyntaxReference
Return _tree.GetReference(node)
End Function
Friend Overrides ReadOnly Property SuppressObsoleteDiagnostics As Boolean
Get
' Obsolete diagnostics is not reported for project level imports. This is VS2013 behavior.
' This also ensures that we don't get into circularity while binding imports because we are
' remapping diagnostics in SourceModuleSymbol.BindImports
Return True
End Get
End Property
End Class
End Namespace
......@@ -369,6 +369,8 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Symbols
binder.BindImportClause(globalImport.Clause, data, diagBagForThisImport)
' Map diagnostics to new ones.
' Note, it is safe to resolve diagnostics here because we suppress obsolete diagnostics
' in ProjectImportsBinder.
For Each d As Diagnostic In diagBagForThisImport.AsEnumerable()
' NOTE: Dev10 doesn't report 'ERR_DuplicateImport1' for project level imports.
If d.Code <> ERRID.ERR_DuplicateImport1 Then
......
......@@ -23618,5 +23618,60 @@ BC40012: event 'E2' implicitly declares 'remove_E2', which conflicts with a memb
CompilationUtils.AssertTheseDeclarationDiagnostics(compilation1, expectedErrors1)
End Sub
<Fact>
Public Sub NoObsoleteDiagnosticsForProjectLevelImports_01()
Dim options = TestOptions.ReleaseDll.WithGlobalImports(GlobalImport.Parse({"GlobEnumsClass"}))
Dim compilation = CompilationUtils.CreateCompilationWithMscorlib(
<compilation>
<file name="a.vb"><![CDATA[
<System.Serializable><System.Obsolete()>
Class GlobEnumsClass
Public Enum xEmailMsg
Option1
Option2
End Enum
End Class
Class Account
Property Status() As xEmailMsg
End Class
]]></file>
</compilation>, options)
CompileAndVerify(compilation).VerifyDiagnostics()
End Sub
<Fact>
Public Sub NoObsoleteDiagnosticsForProjectLevelImports_02()
Dim compilation = CompilationUtils.CreateCompilationWithMscorlib(
<compilation>
<file name="a.vb"><![CDATA[
Imports GlobEnumsClass
<System.Serializable><System.Obsolete()>
Class GlobEnumsClass
Public Enum xEmailMsg
Option1
Option2
End Enum
End Class
Class Account
Property Status() As xEmailMsg
End Class
]]></file>
</compilation>, TestOptions.ReleaseDll)
compilation.AssertTheseDiagnostics(<expected>
BC40008: 'GlobEnumsClass' is obsolete.
Imports GlobEnumsClass
~~~~~~~~~~~~~~
</expected>)
End Sub
End Class
End Namespace
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册