diff --git a/src/Compilers/CSharp/Test/Semantic/IOperation/IOperationTests_IInstanceReferenceTests.cs b/src/Compilers/CSharp/Test/Semantic/IOperation/IOperationTests_IInstanceReferenceTests.cs new file mode 100644 index 0000000000000000000000000000000000000000..5058fa2e027f1fb8919c1db354b8e7fd820371d4 --- /dev/null +++ b/src/Compilers/CSharp/Test/Semantic/IOperation/IOperationTests_IInstanceReferenceTests.cs @@ -0,0 +1,68 @@ +// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.CodeAnalysis.CSharp.Syntax; +using Microsoft.CodeAnalysis.Test.Utilities; +using Xunit; + +namespace Microsoft.CodeAnalysis.CSharp.UnitTests +{ + public partial class IOperationTests : SemanticModelTestBase + { + [CompilerTrait(CompilerFeature.IOperation)] + [Fact] + public void IInstanceReferenceExpression_SimpleBaseReference() + { + string source = @" +using System; + +public class C1 +{ + public virtual void M1() { } +} + +public class C2 : C1 +{ + public override void M1() + { + /**/base/**/.M1(); + } +} +"; + string expectedOperationTree = @" +IInstanceReferenceExpression (IsBaseReference: True) (OperationKind.InstanceReferenceExpression, Type: C1) (Syntax: 'base') +"; + var expectedDiagnostics = DiagnosticDescription.None; + + VerifyOperationTreeAndDiagnosticsForTest(source, expectedOperationTree, expectedDiagnostics); + } + + [CompilerTrait(CompilerFeature.IOperation)] + [Fact] + public void IInstanceReferenceExpression_BaseNoMemberReference() + { + string source = @" +using System; + +public class C1 +{ + public virtual void M1() + { + /**/base/**/.M1(); + } +} +"; + string expectedOperationTree = @" +IInstanceReferenceExpression (IsBaseReference: True) (OperationKind.InstanceReferenceExpression, Type: System.Object) (Syntax: 'base') +"; + var expectedDiagnostics = new DiagnosticDescription[] { + // CS0117: 'object' does not contain a definition for 'M1' + // /**/base/**/.M1(); + Diagnostic(ErrorCode.ERR_NoSuchMember, "M1").WithArguments("object", "M1").WithLocation(8, 35) + }; + + VerifyOperationTreeAndDiagnosticsForTest(source, expectedOperationTree, expectedDiagnostics); + } + + + } +} diff --git a/src/Compilers/VisualBasic/Test/Semantic/IOperation/IOperationTests_IInstanceReferenceExpression.vb b/src/Compilers/VisualBasic/Test/Semantic/IOperation/IOperationTests_IInstanceReferenceExpression.vb new file mode 100644 index 0000000000000000000000000000000000000000..6c454864bde23f539a07a4d425b86455ff0a60e2 --- /dev/null +++ b/src/Compilers/VisualBasic/Test/Semantic/IOperation/IOperationTests_IInstanceReferenceExpression.vb @@ -0,0 +1,66 @@ +' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +Imports Microsoft.CodeAnalysis.Test.Utilities +Imports Microsoft.CodeAnalysis.VisualBasic.Syntax + +Namespace Microsoft.CodeAnalysis.VisualBasic.UnitTests.Semantics + + Partial Public Class IOperationTests + Inherits SemanticModelTestBase + + + + Public Sub IInstanceReferenceExpression_SimpleBaseReference() + Dim source = .Value + + Dim expectedOperationTree = .Value + + Dim expectedDiagnostics = String.Empty + + VerifyOperationTreeAndDiagnosticsForTest(Of MyBaseExpressionSyntax)(source, expectedOperationTree, expectedDiagnostics) + End Sub + + + + Public Sub IInstanceReferenceExpression_BaseNoMemberReferene() + Dim source = .Value + + Dim expectedOperationTree = .Value + + Dim expectedDiagnostics = .Value + + VerifyOperationTreeAndDiagnosticsForTest(Of MyBaseExpressionSyntax)(source, expectedOperationTree, expectedDiagnostics) + End Sub + + + + End Class +End Namespace