/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Features/TestUtilities/EditAndContinue/SymReaderTestHelpers.cs
65 строк
3 KB
Cyrus Najmabadi
Use file scoped namespaces. (#77854)
27 мар 2025, 09:55
Не верифицирован
27 мар 2025, 09:55
98d41b8
Код
Авторство
О чём код?
// 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. #nullable disable using System; using System.Collections.Immutable; using System.IO; using System.Reflection; using Microsoft.CodeAnalysis.Emit; using Microsoft.CodeAnalysis.Test.Utilities; using Microsoft.DiaSymReader; using Microsoft.DiaSymReader.PortablePdb; using Xunit; namespace Microsoft.CodeAnalysis.EditAndContinue.UnitTests; internal static class SymReaderTestHelpers { private sealed class DummyMetadataImportProvider : IMetadataImportProvider { public object GetMetadataImport() => throw new NotImplementedException(); } private sealed class DummySymReaderMetadataProvider : ISymReaderMetadataProvider { public unsafe bool TryGetStandaloneSignature(int standaloneSignatureToken, out byte* signature, out int length) => throw new NotImplementedException(); public bool TryGetTypeDefinitionInfo(int typeDefinitionToken, out string namespaceName, out string typeName, out TypeAttributes attributes) => throw new NotImplementedException(); public bool TryGetTypeReferenceInfo(int typeReferenceToken, out string namespaceName, out string typeName) => throw new NotImplementedException(); } public static (ImmutableArray<byte> PEImage, ImmutableArray<byte> PdbImage) EmitToArrays(this Compilation compilation, EmitOptions options) { var pdbStream = new MemoryStream(); var peImage = compilation.EmitToArray(options, pdbStream: pdbStream); return (peImage, pdbStream.ToImmutable()); } public static ISymUnmanagedReader5 OpenDummySymReader(ImmutableArray<byte> pdbImage) { var symBinder = new SymBinder(); var metadataImportProvider = new DummyMetadataImportProvider(); var pdbStream = new MemoryStream(); pdbImage.WriteToStream(pdbStream); var pdbStreamCom = SymUnmanagedStreamFactory.CreateStream(pdbStream); if (pdbImage is [(byte)'B', (byte)'S', (byte)'J', (byte)'B', ..]) { var hr = symBinder.GetReaderFromPdbStream(metadataImportProvider, pdbStreamCom, out var symReader); Assert.Equal(0, hr); return (ISymUnmanagedReader5)symReader; } else { return SymUnmanagedReaderFactory.CreateReader<ISymUnmanagedReader5>(pdbStream, new DummySymReaderMetadataProvider()); } } }