/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Compilers/VisualBasic/Test/Semantic/Semantics/OptionApis.vb
326 строк
11 KB
Tomáš Matoušek
Refactoring of extension methods in source packages (#78620) - take 2 (#78894)
26 июн 2025, 18:42
Не верифицирован
26 июн 2025, 18:42
05fc006
Код
Авторство
О чём код?
' 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.VisualBasic Imports Microsoft.CodeAnalysis.VisualBasic.Syntax Imports Roslyn.Test.Utilities Namespace Microsoft.CodeAnalysis.VisualBasic.UnitTests.Semantics Public Class OptionApis Inherits SemanticModelTestBase <Fact> Public Sub Options1() Dim compilation = CreateCompilationWithMscorlib40AndVBRuntime( <compilation name="GetSemanticInfo"> <file name="allon.vb"> Option Strict On Option Infer On Option Explicit On Option Compare Text </file> <file name="alloff.vb"> Option Strict Off Option Infer Off Option Explicit Off Option Compare Binary </file> <file name="empty.vb"></file> </compilation>, TestOptions.ReleaseDll.WithOptionStrict(OptionStrict.Custom).WithOptionInfer(False).WithOptionExplicit(True).WithOptionCompareText(False)) Dim semanticModelAllOn = CompilationUtils.GetSemanticModel(compilation, "allon.vb") Assert.Equal(OptionStrict.On, semanticModelAllOn.OptionStrict) Assert.Equal(True, semanticModelAllOn.OptionInfer) Assert.Equal(True, semanticModelAllOn.OptionExplicit) Assert.Equal(True, semanticModelAllOn.OptionCompareText) Dim semanticModelAllOff = CompilationUtils.GetSemanticModel(compilation, "alloff.vb") Assert.Equal(OptionStrict.Off, semanticModelAllOff.OptionStrict) Assert.Equal(False, semanticModelAllOff.OptionInfer) Assert.Equal(False, semanticModelAllOff.OptionExplicit) Assert.Equal(False, semanticModelAllOff.OptionCompareText) Dim semanticModelEmpty = CompilationUtils.GetSemanticModel(compilation, "empty.vb") Assert.Equal(OptionStrict.Custom, semanticModelEmpty.OptionStrict) Assert.Equal(False, semanticModelEmpty.OptionInfer) Assert.Equal(True, semanticModelEmpty.OptionExplicit) Assert.Equal(False, semanticModelEmpty.OptionCompareText) End Sub <Fact> <WorkItem(50610, "https://github.com/dotnet/roslyn/issues/50610")> Public Sub MissingParts_01() Dim compilation = CreateCompilation( <compilation name="GetSemanticInfo"> <file name="a.vb"> Option Text </file> </compilation>) Dim tree = compilation.SyntaxTrees.Single() Dim root = tree.GetRoot() Dim stmt = root.DescendantNodes().OfType(Of OptionStatementSyntax)().Single() Assert.Equal(SyntaxKind.CompareKeyword, stmt.NameKeyword.Kind) Assert.Equal(SyntaxKind.None, stmt.ValueKeyword.Kind) Assert.True(stmt.NameKeyword.IsMissing) Assert.False(stmt.ValueKeyword.IsMissing) compilation.AssertTheseDiagnostics( <expected> BC30208: 'Compare' expected. Option Text ~~~~ </expected>) Dim model = compilation.GetSemanticModel(tree) For i As Integer = 0 To root.Span.End model.GetEnclosingSymbol(i) Next End Sub <Fact> Public Sub MissingParts_02() Dim compilation = CreateCompilation( <compilation name="GetSemanticInfo"> <file name="a.vb"> Option Compare </file> </compilation>) Dim tree = compilation.SyntaxTrees.Single() Dim root = tree.GetRoot() Dim stmt = root.DescendantNodes().OfType(Of OptionStatementSyntax)().Single() Assert.Equal(SyntaxKind.CompareKeyword, stmt.NameKeyword.Kind) Assert.Equal(SyntaxKind.BinaryKeyword, stmt.ValueKeyword.Kind) Assert.False(stmt.NameKeyword.IsMissing) Assert.True(stmt.ValueKeyword.IsMissing) compilation.AssertTheseDiagnostics( <expected> BC30207: 'Option Compare' must be followed by 'Text' or 'Binary'. Option Compare ~~~~~~~~~~~~~~ </expected>) Dim model = compilation.GetSemanticModel(tree) For i As Integer = 0 To root.Span.End model.GetEnclosingSymbol(i) Next End Sub <Fact> Public Sub MissingParts_03() Dim compilation = CreateCompilation( <compilation name="GetSemanticInfo"> <file name="a.vb"> Option Strict </file> </compilation>) Dim tree = compilation.SyntaxTrees.Single() Dim root = tree.GetRoot() Dim stmt = root.DescendantNodes().OfType(Of OptionStatementSyntax)().Single() Assert.Equal(SyntaxKind.StrictKeyword, stmt.NameKeyword.Kind) Assert.Equal(SyntaxKind.None, stmt.ValueKeyword.Kind) Assert.False(stmt.NameKeyword.IsMissing) Assert.False(stmt.ValueKeyword.IsMissing) compilation.AssertNoDiagnostics() Dim model = compilation.GetSemanticModel(tree) For i As Integer = 0 To root.Span.End model.GetEnclosingSymbol(i) Next End Sub <Fact> Public Sub MissingParts_04() Dim compilation = CreateCompilation( <compilation name="GetSemanticInfo"> <file name="a.vb"> Option Infer </file> </compilation>) Dim tree = compilation.SyntaxTrees.Single() Dim root = tree.GetRoot() Dim stmt = root.DescendantNodes().OfType(Of OptionStatementSyntax)().Single() Assert.Equal(SyntaxKind.InferKeyword, stmt.NameKeyword.Kind) Assert.Equal(SyntaxKind.None, stmt.ValueKeyword.Kind) Assert.False(stmt.NameKeyword.IsMissing) Assert.False(stmt.ValueKeyword.IsMissing) compilation.AssertNoDiagnostics() Dim model = compilation.GetSemanticModel(tree) For i As Integer = 0 To root.Span.End model.GetEnclosingSymbol(i) Next End Sub <Fact> Public Sub MissingParts_05() Dim compilation = CreateCompilation( <compilation name="GetSemanticInfo"> <file name="a.vb"> Option Explicit </file> </compilation>) Dim tree = compilation.SyntaxTrees.Single() Dim root = tree.GetRoot() Dim stmt = root.DescendantNodes().OfType(Of OptionStatementSyntax)().Single() Assert.Equal(SyntaxKind.ExplicitKeyword, stmt.NameKeyword.Kind) Assert.Equal(SyntaxKind.None, stmt.ValueKeyword.Kind) Assert.False(stmt.NameKeyword.IsMissing) Assert.False(stmt.ValueKeyword.IsMissing) compilation.AssertNoDiagnostics() Dim model = compilation.GetSemanticModel(tree) For i As Integer = 0 To root.Span.End model.GetEnclosingSymbol(i) Next End Sub <Fact> Public Sub MissingParts_06() Dim compilation = CreateCompilation( <compilation name="GetSemanticInfo"> <file name="a.vb"> Option On </file> </compilation>) Dim tree = compilation.SyntaxTrees.Single() Dim root = tree.GetRoot() Dim stmt = root.DescendantNodes().OfType(Of OptionStatementSyntax)().Single() Assert.Equal(SyntaxKind.StrictKeyword, stmt.NameKeyword.Kind) Assert.Equal(SyntaxKind.None, stmt.ValueKeyword.Kind) Assert.True(stmt.NameKeyword.IsMissing) Assert.False(stmt.ValueKeyword.IsMissing) compilation.AssertTheseDiagnostics( <expected> BC30206: 'Option' must be followed by 'Compare', 'Explicit', 'Infer', or 'Strict'. Option On ~~ </expected>) Dim model = compilation.GetSemanticModel(tree) For i As Integer = 0 To root.Span.End model.GetEnclosingSymbol(i) Next End Sub <Fact> Public Sub MissingParts_07() Dim compilation = CreateCompilation( <compilation name="GetSemanticInfo"> <file name="a.vb"> Option Off </file> </compilation>) Dim tree = compilation.SyntaxTrees.Single() Dim root = tree.GetRoot() Dim stmt = root.DescendantNodes().OfType(Of OptionStatementSyntax)().Single() Assert.Equal(SyntaxKind.StrictKeyword, stmt.NameKeyword.Kind) Assert.Equal(SyntaxKind.None, stmt.ValueKeyword.Kind) Assert.True(stmt.NameKeyword.IsMissing) Assert.False(stmt.ValueKeyword.IsMissing) compilation.AssertTheseDiagnostics( <expected> BC30206: 'Option' must be followed by 'Compare', 'Explicit', 'Infer', or 'Strict'. Option Off ~~~ </expected>) Dim model = compilation.GetSemanticModel(tree) For i As Integer = 0 To root.Span.End model.GetEnclosingSymbol(i) Next End Sub <Fact> Public Sub MissingParts_08() Dim compilation = CreateCompilation( <compilation name="GetSemanticInfo"> <file name="a.vb"> Option </file> </compilation>) Dim tree = compilation.SyntaxTrees.Single() Dim root = tree.GetRoot() Dim stmt = root.DescendantNodes().OfType(Of OptionStatementSyntax)().Single() Assert.Equal(SyntaxKind.StrictKeyword, stmt.NameKeyword.Kind) Assert.Equal(SyntaxKind.None, stmt.ValueKeyword.Kind) Assert.True(stmt.NameKeyword.IsMissing) Assert.False(stmt.ValueKeyword.IsMissing) compilation.AssertTheseDiagnostics( <expected> BC30206: 'Option' must be followed by 'Compare', 'Explicit', 'Infer', or 'Strict'. Option ~~~~~~ </expected>) Dim model = compilation.GetSemanticModel(tree) For i As Integer = 0 To root.Span.End model.GetEnclosingSymbol(i) Next End Sub <Fact> <WorkItem(50610, "https://github.com/dotnet/roslyn/issues/50610")> Public Sub MissingParts_09() Dim compilation = CreateCompilation( <compilation name="GetSemanticInfo"> <file name="a.vb"> Option Binary </file> </compilation>) Dim tree = compilation.SyntaxTrees.Single() Dim root = tree.GetRoot() Dim stmt = root.DescendantNodes().OfType(Of OptionStatementSyntax)().Single() Assert.Equal(SyntaxKind.CompareKeyword, stmt.NameKeyword.Kind) Assert.Equal(SyntaxKind.None, stmt.ValueKeyword.Kind) Assert.True(stmt.NameKeyword.IsMissing) Assert.False(stmt.ValueKeyword.IsMissing) compilation.AssertTheseDiagnostics( <expected> BC30208: 'Compare' expected. Option Binary ~~~~~~ </expected>) Dim model = compilation.GetSemanticModel(tree) For i As Integer = 0 To root.Span.End model.GetEnclosingSymbol(i) Next End Sub End Class End Namespace