diff --git a/src/Compilers/CSharp/Test/Emit/CSharpCompilerEmitTest.csproj b/src/Compilers/CSharp/Test/Emit/CSharpCompilerEmitTest.csproj index 92f79c80837b72944b4d0ea4fdc9a4ca530fb7a7..e4d06c7c65ba6ca64748bfd3e29cf02cc89660dc 100644 --- a/src/Compilers/CSharp/Test/Emit/CSharpCompilerEmitTest.csproj +++ b/src/Compilers/CSharp/Test/Emit/CSharpCompilerEmitTest.csproj @@ -146,14 +146,13 @@ - + - diff --git a/src/Compilers/CSharp/Test/Emit/Emit/EmitMetadata.cs b/src/Compilers/CSharp/Test/Emit/Emit/EmitMetadataTests.cs similarity index 100% rename from src/Compilers/CSharp/Test/Emit/Emit/EmitMetadata.cs rename to src/Compilers/CSharp/Test/Emit/Emit/EmitMetadataTests.cs diff --git a/src/Compilers/CSharp/Test/Emit/Emit/OutputStreams.cs b/src/Compilers/CSharp/Test/Emit/Emit/OutputStreams.cs deleted file mode 100644 index 674fd11abe81b6173b478c92bdd532764d2b3b10..0000000000000000000000000000000000000000 --- a/src/Compilers/CSharp/Test/Emit/Emit/OutputStreams.cs +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - -using System; -using System.IO; -using Microsoft.CodeAnalysis.CSharp.Symbols; -using Microsoft.CodeAnalysis.CSharp.Syntax; -using Microsoft.CodeAnalysis.Text; - -namespace Microsoft.CodeAnalysis.CSharp.UnitTests.Emit -{ - internal class NameResolver - { - public string GetDebugInformationFileName(SyntaxTree syntaxTree) - { - throw new NotImplementedException(); - } - - public Stream GetXmlInclude(SyntaxTree syntaxTree, string xmlIncludeFile) - { - throw new NotImplementedException(); - } - } -} diff --git a/src/Compilers/CSharp/Test/Symbol/Symbols/Source/FieldTests.cs b/src/Compilers/CSharp/Test/Symbol/Symbols/Source/FieldTests.cs index e729fb6704689630fbad792272eb90f314658a72..47674b58aca6af06da8da369753ecbd7fc7965fc 100644 --- a/src/Compilers/CSharp/Test/Symbol/Symbols/Source/FieldTests.cs +++ b/src/Compilers/CSharp/Test/Symbol/Symbols/Source/FieldTests.cs @@ -483,7 +483,7 @@ static System.Action F() Diagnostic(ErrorCode.WRN_UnreferencedFieldAssg, "value__").WithArguments("A.value__")); // PEVerify should not report "Field value__ ... is not marked RTSpecialName". - var verifier = new CompilationVerifier(this, compilation); + var verifier = new CompilationVerifier(compilation); verifier.EmitAndVerify( "Error: Field name value__ is reserved for Enums only.", "Error: Field name value__ is reserved for Enums only.", diff --git a/src/Compilers/Test/Utilities/CSharp/BasicCompilationUtils.cs b/src/Compilers/Test/Utilities/CSharp/BasicCompilationUtils.cs index faa5e71bbc9b7cb797c97ae66284e8f6b04873c5..8bce514d5e18265d785d14115134d87d124d962a 100644 --- a/src/Compilers/Test/Utilities/CSharp/BasicCompilationUtils.cs +++ b/src/Compilers/Test/Utilities/CSharp/BasicCompilationUtils.cs @@ -53,11 +53,6 @@ protected override Compilation GetCompilationForEmit(IEnumerable source, throw new NotImplementedException(); } - internal override IEnumerable ReferencesToModuleSymbols(IEnumerable references, MetadataImportOptions importOptions = MetadataImportOptions.Public) - { - throw new NotImplementedException(); - } - internal override string VisualizeRealIL(IModuleSymbol peModule, CodeAnalysis.CodeGen.CompilationTestData.MethodData methodData, IReadOnlyDictionary markers) { throw new NotImplementedException(); diff --git a/src/Compilers/Test/Utilities/CSharp/CSharpTestBase.cs b/src/Compilers/Test/Utilities/CSharp/CSharpTestBase.cs index 917788c4d65bbc10075971ceaff114594a810e8b..114f877c44bbd07bb2d8e14666b66a3f5b04ffb5 100644 --- a/src/Compilers/Test/Utilities/CSharp/CSharpTestBase.cs +++ b/src/Compilers/Test/Utilities/CSharp/CSharpTestBase.cs @@ -38,11 +38,6 @@ public abstract class CSharpTestBase : CSharpTestBaseBase return (CSharpCompilation)base.GetCompilationForEmit(source, additionalRefs, options, parseOptions); } - internal new IEnumerable ReferencesToModuleSymbols(IEnumerable references, MetadataImportOptions importOptions = MetadataImportOptions.Public) - { - return base.ReferencesToModuleSymbols(references, importOptions).Cast(); - } - private Action Translate2(Action action) { if (action != null) @@ -219,24 +214,6 @@ public static CSharpCompilation CreateWinRtCompilation(string text, MetadataRefe TestOptions.ReleaseExe); } - internal override IEnumerable ReferencesToModuleSymbols(IEnumerable references, MetadataImportOptions importOptions = MetadataImportOptions.Public) - { - var options = TestOptions.ReleaseDll.WithMetadataImportOptions(importOptions); - var tc1 = CSharpCompilation.Create("Dummy", new SyntaxTree[0], references, options); - return references.Select(r => - { - if (r.Properties.Kind == MetadataImageKind.Assembly) - { - var assemblySymbol = tc1.GetReferencedAssemblySymbol(r); - return (object)assemblySymbol == null ? null : assemblySymbol.Modules[0]; - } - else - { - return tc1.GetReferencedModuleSymbol(r); - } - }); - } - protected override CompilationOptions CompilationOptionsReleaseDll { get { return TestOptions.ReleaseDll; } diff --git a/src/Compilers/Test/Utilities/VisualBasic/BasicTestBase.vb b/src/Compilers/Test/Utilities/VisualBasic/BasicTestBase.vb index 1f2063c4ad3bcfb73d9d5128f3e3097b96a2305a..795ccfcfe58b285fa929041a367638be37b35b7d 100644 --- a/src/Compilers/Test/Utilities/VisualBasic/BasicTestBase.vb +++ b/src/Compilers/Test/Utilities/VisualBasic/BasicTestBase.vb @@ -414,20 +414,6 @@ End Class Public MustInherit Class BasicTestBaseBase Inherits CommonTestBase - Friend Overrides Function ReferencesToModuleSymbols(references As IEnumerable(Of MetadataReference), Optional importOptions As MetadataImportOptions = MetadataImportOptions.Public) As IEnumerable(Of IModuleSymbol) - Dim options = DirectCast(CompilationOptionsReleaseDll, VisualBasicCompilationOptions).WithMetadataImportOptions(importOptions) - Dim tc1 = VisualBasicCompilation.Create("Dummy", references:=references, options:=options) - Return references.Select( - Function(r) - If r.Properties.Kind = MetadataImageKind.Assembly Then - Dim assemblySymbol = tc1.GetReferencedAssemblySymbol(r) - Return If(assemblySymbol Is Nothing, Nothing, assemblySymbol.Modules(0)) - Else - Return tc1.GetReferencedModuleSymbol(r) - End If - End Function) - End Function - Protected Overrides ReadOnly Property CompilationOptionsReleaseDll As CompilationOptions Get Return TestOptions.ReleaseDll diff --git a/src/Compilers/VisualBasic/Test/Symbol/SymbolsTests/Source/FieldTests.vb b/src/Compilers/VisualBasic/Test/Symbol/SymbolsTests/Source/FieldTests.vb index d445b591d980f1631df7d36784cf670b2a3ba15b..436de03b2743e41b23fdfd127b132925cbe442dd 100644 --- a/src/Compilers/VisualBasic/Test/Symbol/SymbolsTests/Source/FieldTests.vb +++ b/src/Compilers/VisualBasic/Test/Symbol/SymbolsTests/Source/FieldTests.vb @@ -491,7 +491,7 @@ End Module compilation.AssertNoErrors() ' PEVerify should not report "Field value__ ... is not marked RTSpecialName". - Dim verifier = New CompilationVerifier(Me, compilation) + Dim verifier = New CompilationVerifier(compilation) verifier.EmitAndVerify( "Error: Field name value__ is reserved for Enums only.") End Sub diff --git a/src/Test/Utilities/Portable/CommonTestBase.CompilationVerifier.cs b/src/Test/Utilities/Portable/CommonTestBase.CompilationVerifier.cs index 5b2df8ca3df4f9c74c5b8e4316c56b3149646ac1..0a15afaad15d69b9e7658f53cb1e2ffa659f89ae 100644 --- a/src/Test/Utilities/Portable/CommonTestBase.CompilationVerifier.cs +++ b/src/Test/Utilities/Portable/CommonTestBase.CompilationVerifier.cs @@ -25,7 +25,6 @@ public partial class CommonTestBase { public class CompilationVerifier { - private readonly CommonTestBase _test; private readonly Compilation _compilation; private CompilationTestData _testData; private readonly IEnumerable _dependencies; @@ -36,35 +35,21 @@ public class CompilationVerifier internal ImmutableArray EmittedAssemblyData; internal ImmutableArray EmittedAssemblyPdb; - public CompilationVerifier( - CommonTestBase test, + private readonly Func, string> _visualizeRealIL; + + internal CompilationVerifier( Compilation compilation, + Func, string> visualizeRealIL = null, IEnumerable dependencies = null) { - _test = test; _compilation = compilation; _dependencies = dependencies; + _visualizeRealIL = visualizeRealIL; } - internal CompilationTestData TestData - { - get { return _testData; } - } - - public Compilation Compilation - { - get { return _compilation; } - } - - public TempRoot Temp - { - get { return _test.Temp; } - } - - internal ImmutableArray Diagnostics - { - get { return _diagnostics; } - } + internal CompilationTestData TestData => _testData; + public Compilation Compilation => _compilation; + internal ImmutableArray Diagnostics => _diagnostics; internal ImmutableArray GetAllModuleMetadata() { @@ -283,7 +268,7 @@ internal string VisualizeIL(CompilationTestData.MethodData methodData, bool real _lazyModuleSymbol = GetModuleSymbolForEmittedImage(EmittedAssemblyData, MetadataImportOptions.All); } - return _lazyModuleSymbol != null ? _test.VisualizeRealIL(_lazyModuleSymbol, methodData, markers) : null; + return _lazyModuleSymbol != null ? _visualizeRealIL(_lazyModuleSymbol, methodData, markers) : null; } public CompilationVerifier VerifyMemberInIL(string methodName, bool expected) @@ -312,10 +297,32 @@ private IModuleSymbol GetModuleSymbolForEmittedImage(ImmutableArray peImag var targetReference = LoadTestEmittedExecutableForSymbolValidation(peImage, _compilation.Options.OutputKind, display: _compilation.AssemblyName); var references = _compilation.References.Concat(new[] { targetReference }); - var assemblies = _test.ReferencesToModuleSymbols(references, importOptions); + var assemblies = GetReferencesToModuleSymbols(references, importOptions); return assemblies.Last(); } + private IEnumerable GetReferencesToModuleSymbols(IEnumerable references, MetadataImportOptions importOptions) + { + var dummy = _compilation + .RemoveAllReferences() + .RemoveAllSyntaxTrees() + .WithReferences(references) + .WithAssemblyName("Dummy") + .WithOptions(_compilation.Options.WithMetadataImportOptions(importOptions)); + + return references.Select(reference => + { + if (reference.Properties.Kind == MetadataImageKind.Assembly) + { + return ((IAssemblySymbol)dummy.GetAssemblyOrModuleSymbol(reference))?.Modules.First(); + } + else + { + return (IModuleSymbol)dummy.GetAssemblyOrModuleSymbol(reference); + } + }); + } + internal static MetadataReference LoadTestEmittedExecutableForSymbolValidation( ImmutableArray image, OutputKind outputKind, diff --git a/src/Test/Utilities/Portable/CommonTestBase.cs b/src/Test/Utilities/Portable/CommonTestBase.cs index d1adacc3af75440a025d0886d4538b7c5571140d..d32b9e4b2b12e734aee571effabf255d644f5526 100644 --- a/src/Test/Utilities/Portable/CommonTestBase.cs +++ b/src/Test/Utilities/Portable/CommonTestBase.cs @@ -23,8 +23,6 @@ namespace Microsoft.CodeAnalysis.Test.Utilities /// public abstract partial class CommonTestBase : TestBase { - internal abstract IEnumerable ReferencesToModuleSymbols(IEnumerable references, MetadataImportOptions importOptions = MetadataImportOptions.Public); - #region Emit protected abstract Compilation GetCompilationForEmit( @@ -214,9 +212,7 @@ static internal void RunValidators(CompilationVerifier verifier, Action