From 2bff88d3e7da47c2fa67a2fdec15f8092665e1f7 Mon Sep 17 00:00:00 2001 From: AlekseyTs Date: Wed, 25 Aug 2021 14:14:03 -0700 Subject: [PATCH] Test GetSpeculativeAliasInfo for a global alias. Related to #51307. --- .../Semantics/GlobalUsingDirectiveTests.cs | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/Compilers/CSharp/Test/Semantic/Semantics/GlobalUsingDirectiveTests.cs b/src/Compilers/CSharp/Test/Semantic/Semantics/GlobalUsingDirectiveTests.cs index 152b037e240f3..b56ec7a59fbb2 100644 --- a/src/Compilers/CSharp/Test/Semantic/Semantics/GlobalUsingDirectiveTests.cs +++ b/src/Compilers/CSharp/Test/Semantic/Semantics/GlobalUsingDirectiveTests.cs @@ -4983,5 +4983,32 @@ class C where T : class {} Diagnostic(ErrorCode.ERR_RefConstraintNotSatisfied, "C").WithArguments("C", "T", "short").WithLocation(3001, 14) ); } + + [Fact] + public void GetSpeculativeAliasInfo_01() + { + var globalUsings1 = @" +global using alias1 = C1; + +class C1 {} +"; + + var source = @" +class C2 {} +"; + + var comp = CreateCompilation(new[] { globalUsings1, source }, parseOptions: TestOptions.RegularPreview); + var alias1 = SyntaxFactory.IdentifierName("alias1"); + + var tree = comp.SyntaxTrees[0]; + var model = comp.GetSemanticModel(tree); + Assert.Equal("alias1=C1", model.GetSpeculativeAliasInfo(tree.GetRoot().Span.End, alias1, SpeculativeBindingOption.BindAsExpression).ToTestDisplayString()); + Assert.Equal("alias1=C1", model.GetSpeculativeAliasInfo(tree.GetRoot().Span.End, alias1, SpeculativeBindingOption.BindAsTypeOrNamespace).ToTestDisplayString()); + + tree = comp.SyntaxTrees[1]; + model = comp.GetSemanticModel(tree); + Assert.Equal("alias1=C1", model.GetSpeculativeAliasInfo(tree.GetRoot().Span.End, alias1, SpeculativeBindingOption.BindAsExpression).ToTestDisplayString()); + Assert.Equal("alias1=C1", model.GetSpeculativeAliasInfo(tree.GetRoot().Span.End, alias1, SpeculativeBindingOption.BindAsTypeOrNamespace).ToTestDisplayString()); + } } }