/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Compilers/VisualBasic/Test/Semantic/Semantics/NativeIntegerTests.vb
76 строк
4 KB
Julien Couvreur
Attach C# 9 features to LanguageVersion.CSharp9 (#46645)
15 авг 2020, 03:26
Не верифицирован
15 авг 2020, 03:26
1ed3ef5
Код
Авторство
О чём код?
' 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. Imports Microsoft.CodeAnalysis.Test.Utilities Imports Roslyn.Test.Utilities Namespace Microsoft.CodeAnalysis.VisualBasic.UnitTests Public Class NativeIntegerTests Inherits BasicTestBase <Fact> Public Sub TypeDefinitions_FromMetadata() Dim source0 = "public interface I { public void F1(System.IntPtr x, nint y); public void F2(System.UIntPtr x, nuint y); }" Dim comp As Compilation = CreateCSharpCompilation(source0, parseOptions:=New CSharp.CSharpParseOptions(CSharp.LanguageVersion.CSharp9)) Dim ref0 = comp.EmitToImageReference() Dim type = comp.GlobalNamespace.GetTypeMembers("I").Single() Dim method = DirectCast(type.GetMembers("F1").Single(), IMethodSymbol) Assert.Equal("Sub I.F1(x As System.IntPtr, y As System.IntPtr)", SymbolDisplay.ToDisplayString(method, SymbolDisplayFormat.TestFormat)) VerifyType(DirectCast(method.Parameters(0).Type, INamedTypeSymbol), signed:=True, isNativeInteger:=False) VerifyType(DirectCast(method.Parameters(1).Type, INamedTypeSymbol), signed:=True, isNativeInteger:=True) method = DirectCast(type.GetMembers("F2").Single(), IMethodSymbol) Assert.Equal("Sub I.F2(x As System.UIntPtr, y As System.UIntPtr)", SymbolDisplay.ToDisplayString(method, SymbolDisplayFormat.TestFormat)) VerifyType(DirectCast(method.Parameters(0).Type, INamedTypeSymbol), signed:=False, isNativeInteger:=False) VerifyType(DirectCast(method.Parameters(1).Type, INamedTypeSymbol), signed:=False, isNativeInteger:=True) comp = CreateCompilation("", references:={ref0}) comp.VerifyDiagnostics() type = comp.GlobalNamespace.GetTypeMembers("I").Single() method = DirectCast(type.GetMembers("F1").Single(), IMethodSymbol) Assert.Equal("Sub I.F1(x As System.IntPtr, y As System.IntPtr)", SymbolDisplay.ToDisplayString(method, SymbolDisplayFormat.TestFormat)) VerifyType(DirectCast(method.Parameters(0).Type, INamedTypeSymbol), signed:=True, isNativeInteger:=False) VerifyType(DirectCast(method.Parameters(1).Type, INamedTypeSymbol), signed:=True, isNativeInteger:=False) method = DirectCast(type.GetMembers("F2").Single(), IMethodSymbol) Assert.Equal("Sub I.F2(x As System.UIntPtr, y As System.UIntPtr)", SymbolDisplay.ToDisplayString(method, SymbolDisplayFormat.TestFormat)) VerifyType(DirectCast(method.Parameters(0).Type, INamedTypeSymbol), signed:=False, isNativeInteger:=False) VerifyType(DirectCast(method.Parameters(1).Type, INamedTypeSymbol), signed:=False, isNativeInteger:=False) End Sub Private Shared Sub VerifyType(type As INamedTypeSymbol, signed As Boolean, isNativeInteger As Boolean) Assert.Equal(If(signed, SpecialType.System_IntPtr, SpecialType.System_UIntPtr), type.SpecialType) Assert.Equal(SymbolKind.NamedType, type.Kind) Assert.Equal(TypeKind.Struct, type.TypeKind) Assert.Same(type, type.ConstructedFrom) Assert.Equal(isNativeInteger, type.IsNativeIntegerType) Dim underlyingType = type.NativeIntegerUnderlyingType If isNativeInteger Then Assert.NotNull(underlyingType) VerifyType(underlyingType, signed, isNativeInteger:=False) Else Assert.Null(underlyingType) End If End Sub <Fact> Public Sub CreateNativeIntegerTypeSymbol() Dim comp = VisualBasicCompilation.Create(assemblyName:=GetUniqueName(), references:=TargetFrameworkUtil.GetReferences(TargetFramework.DefaultVb), options:=TestOptions.ReleaseDll) comp.AssertNoDiagnostics() Assert.Throws(Of NotSupportedException)(Function() comp.CreateNativeIntegerTypeSymbol(signed:=True)) Assert.Throws(Of NotSupportedException)(Function() comp.CreateNativeIntegerTypeSymbol(signed:=False)) End Sub End Class End Namespace