/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Compilers/Core/CodeAnalysisTest/GivesAccessTo.cs
65 строк
3 KB
Tomáš Matoušek
Add ChecksumAlgorithm to project snapshot (#62840)
10 окт 2022, 20:50
Не верифицирован
10 окт 2022, 20:50
157d34a
Код
Авторство
О чём код?
// 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.Linq; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Test.Utilities; using Microsoft.CodeAnalysis.VisualBasic; using Microsoft.CodeAnalysis.VisualBasic.UnitTests; using Roslyn.Test.Utilities; using Xunit; namespace Microsoft.CodeAnalysis.UnitTests { public class GivesAccessTo { [Fact, WorkItem(26459, "https://github.com/dotnet/roslyn/issues/26459")] public void TestGivesAccessTo_CrossLanguageAndCompilation() { var csharpTree = CSharpTestSource.Parse(@" [assembly: System.Runtime.CompilerServices.InternalsVisibleTo(""VB"")] [assembly: System.Runtime.CompilerServices.InternalsVisibleTo(""CS2"")] internal class CS { } "); var csharpTree2 = CSharpTestSource.Parse(@" internal class CS2 { } "); var vbTree = BasicTestSource.Parse(@" <assembly: System.Runtime.CompilerServices.InternalsVisibleTo(""CS"")> <assembly: System.Runtime.CompilerServices.InternalsVisibleTo(""VB2"")> Friend Class VB End Class "); var vbTree2 = BasicTestSource.Parse(@" Friend Class VB2 End Class "); var csc = (Compilation)CSharpCompilation.Create("CS", new[] { csharpTree }, new MetadataReference[] { TestBase.MscorlibRef }); var CS = csc.GlobalNamespace.GetMembers("CS").First() as INamedTypeSymbol; var csc2 = (Compilation)CSharpCompilation.Create("CS2", new[] { csharpTree2 }, new MetadataReference[] { TestBase.MscorlibRef }); var CS2 = csc2.GlobalNamespace.GetMembers("CS2").First() as INamedTypeSymbol; var vbc = VisualBasicCompilation.Create("VB", new[] { vbTree }, new MetadataReference[] { TestBase.MscorlibRef }); var VB = vbc.GlobalNamespace.GetMembers("VB")[0] as INamedTypeSymbol; var vbc2 = VisualBasicCompilation.Create("VB2", new[] { vbTree2 }, new MetadataReference[] { TestBase.MscorlibRef }); var VB2 = vbc2.GlobalNamespace.GetMembers("VB2")[0] as INamedTypeSymbol; Assert.True(CS.ContainingAssembly.GivesAccessTo(CS2.ContainingAssembly)); Assert.True(CS.ContainingAssembly.GivesAccessTo(VB.ContainingAssembly)); Assert.False(CS.ContainingAssembly.GivesAccessTo(VB2.ContainingAssembly)); Assert.True(VB.ContainingAssembly.GivesAccessTo(VB2.ContainingAssembly)); Assert.True(VB.ContainingAssembly.GivesAccessTo(CS.ContainingAssembly)); Assert.False(VB.ContainingAssembly.GivesAccessTo(CS2.ContainingAssembly)); } } }