diff --git a/src/Compilers/VisualBasic/Portable/Compilation/VisualBasicCompilation.vb b/src/Compilers/VisualBasic/Portable/Compilation/VisualBasicCompilation.vb index b2c6ffb9f71805ead9bd9a15a5376e3a94ae9980..506492bb1bf4af51657165d05fabfc2c5ab47fc3 100644 --- a/src/Compilers/VisualBasic/Portable/Compilation/VisualBasicCompilation.vb +++ b/src/Compilers/VisualBasic/Portable/Compilation/VisualBasicCompilation.vb @@ -2203,7 +2203,12 @@ Namespace Microsoft.CodeAnalysis.VisualBasic Me.EmbeddedSymbolManager.MarkAllDeferredSymbolsAsReferenced(Me) - moduleBeingBuilt.TranslateImports(diagnostics) + ' The translation of global imports assumes absence of error symbols. + ' We don't need to translate them if there are any declaration errors since + ' we are not going to emit the metadata. + If Not hasDeclarationErrors Then + moduleBeingBuilt.TranslateImports(diagnostics) + End If If moduleBeingBuilt.EmitOptions.EmitMetadataOnly Then If hasDeclarationErrors Then diff --git a/src/Compilers/VisualBasic/Test/Emit/PDB/PDBUsingTests.vb b/src/Compilers/VisualBasic/Test/Emit/PDB/PDBUsingTests.vb index 964ed3caf87c7ae1ab92ff0a4f6d76c330f9e332..ccaa934e03a9aca94164d38deec0a188fd3252af 100644 --- a/src/Compilers/VisualBasic/Test/Emit/PDB/PDBUsingTests.vb +++ b/src/Compilers/VisualBasic/Test/Emit/PDB/PDBUsingTests.vb @@ -1,5 +1,6 @@ ' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +Imports System.IO Imports Microsoft.CodeAnalysis.Test.Utilities Imports Roslyn.Test.Utilities @@ -390,5 +391,30 @@ End Class End Sub) End Sub + + Public Sub BadGlobalImports() + Dim source1 = " +Namespace N + Friend Class A + End Class +End Namespace +" + Dim source2 = " +Class C + Sub Main() + Console.WriteLine() + End Sub +End Class +" + Dim comp1 = CreateCompilationWithMscorlib({source1}, options:=TestOptions.ReleaseDll) + Dim ref1 = comp1.EmitToImageReference() + + Dim comp2 = CreateCompilationWithMscorlib( + {source2}, {ref1}, + options:=TestOptions.ReleaseDll.WithGlobalImports(GlobalImport.Parse("X=N.A"), GlobalImport.Parse("System"))) + + comp2.VerifyEmitDiagnostics( + Diagnostic(ERRID.ERR_InaccessibleSymbol2)) + End Sub End Class End Namespace