Moved IPointerIndirectionExpression internal for V1

上级 8b6214de
// 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 System.Collections.Immutable;
using Microsoft.CodeAnalysis.CSharp.Symbols;
using Microsoft.CodeAnalysis.PooledObjects;
using Microsoft.CodeAnalysis.Semantics;
namespace Microsoft.CodeAnalysis.CSharp
......@@ -32,4 +30,9 @@ partial class BoundFixedStatement
{
protected override ImmutableArray<BoundNode> Children => ImmutableArray.Create<BoundNode>(this.Declarations, this.Body);
}
partial class BoundPointerIndirectionOperator
{
protected override ImmutableArray<BoundNode> Children => ImmutableArray.Create<BoundNode>(this.Operand);
}
}
......@@ -155,8 +155,6 @@ private IOperation CreateInternal(BoundNode boundNode)
return CreateBoundAwaitExpressionOperation((BoundAwaitExpression)boundNode);
case BoundKind.ArrayAccess:
return CreateBoundArrayAccessOperation((BoundArrayAccess)boundNode);
case BoundKind.PointerIndirectionOperator:
return CreateBoundPointerIndirectionOperatorOperation((BoundPointerIndirectionOperator)boundNode);
case BoundKind.NameOfOperator:
return CreateBoundNameOfOperatorOperation((BoundNameOfOperator)boundNode);
case BoundKind.ThrowExpression:
......@@ -429,7 +427,7 @@ private IEventAssignmentExpression CreateBoundEventAssignmentOperatorOperation(B
return new LazyEventAssignmentExpression(eventReference, handlerValue, adds, _semanticModel, syntax, type, constantValue, isImplicit);
}
private IParameterReferenceExpression CreateBoundParameterOperation(BoundParameter boundParameter)
private IParameterReferenceExpression CreateBoundParameterOperation(BoundParameter boundParameter)
{
IParameterSymbol parameter = boundParameter.ParameterSymbol;
SyntaxNode syntax = boundParameter.Syntax;
......
......@@ -54,8 +54,9 @@ void M1()
IInterpolatedStringText (OperationKind.InterpolatedStringText) (Syntax: 'P is ')
Text: ILiteralExpression (OperationKind.LiteralExpression, Type: System.String, Constant: ""P is "") (Syntax: 'P is ')
IInterpolation (OperationKind.Interpolation) (Syntax: '{*p}')
Expression: IPointerIndirectionReferenceExpression (OperationKind.PointerIndirectionReferenceExpression, Type: System.Int32) (Syntax: '*p')
Pointer: ILocalReferenceExpression: p (OperationKind.LocalReferenceExpression, Type: System.Int32*) (Syntax: 'p')
Expression: IOperation: (OperationKind.None) (Syntax: '*p')
Children(1):
ILocalReferenceExpression: p (OperationKind.LocalReferenceExpression, Type: System.Int32*) (Syntax: 'p')
Alignment: null
FormatString: null
InConversion: null
......@@ -115,10 +116,12 @@ void M1()
Expression: ISimpleAssignmentExpression (OperationKind.SimpleAssignmentExpression, Type: System.Int32) (Syntax: 'i3 = *p1 + *p2')
Left: ILocalReferenceExpression: i3 (OperationKind.LocalReferenceExpression, Type: System.Int32) (Syntax: 'i3')
Right: IBinaryOperatorExpression (BinaryOperatorKind.Add) (OperationKind.BinaryOperatorExpression, Type: System.Int32) (Syntax: '*p1 + *p2')
Left: IPointerIndirectionReferenceExpression (OperationKind.PointerIndirectionReferenceExpression, Type: System.Int32) (Syntax: '*p1')
Pointer: ILocalReferenceExpression: p1 (OperationKind.LocalReferenceExpression, Type: System.Int32*) (Syntax: 'p1')
Right: IPointerIndirectionReferenceExpression (OperationKind.PointerIndirectionReferenceExpression, Type: System.Int32) (Syntax: '*p2')
Pointer: ILocalReferenceExpression: p2 (OperationKind.LocalReferenceExpression, Type: System.Int32*) (Syntax: 'p2')
Left: IOperation: (OperationKind.None) (Syntax: '*p1')
Children(1):
ILocalReferenceExpression: p1 (OperationKind.LocalReferenceExpression, Type: System.Int32*) (Syntax: 'p1')
Right: IOperation: (OperationKind.None) (Syntax: '*p2')
Children(1):
ILocalReferenceExpression: p2 (OperationKind.LocalReferenceExpression, Type: System.Int32*) (Syntax: 'p2')
";
var expectedDiagnostics = DiagnosticDescription.None;
......@@ -180,10 +183,12 @@ void M1()
Expression: ISimpleAssignmentExpression (OperationKind.SimpleAssignmentExpression, Type: System.Int32) (Syntax: 'i3 = *p1 + *p2')
Left: ILocalReferenceExpression: i3 (OperationKind.LocalReferenceExpression, Type: System.Int32) (Syntax: 'i3')
Right: IBinaryOperatorExpression (BinaryOperatorKind.Add) (OperationKind.BinaryOperatorExpression, Type: System.Int32) (Syntax: '*p1 + *p2')
Left: IPointerIndirectionReferenceExpression (OperationKind.PointerIndirectionReferenceExpression, Type: System.Int32) (Syntax: '*p1')
Pointer: ILocalReferenceExpression: p1 (OperationKind.LocalReferenceExpression, Type: System.Int32*) (Syntax: 'p1')
Right: IPointerIndirectionReferenceExpression (OperationKind.PointerIndirectionReferenceExpression, Type: System.Int32) (Syntax: '*p2')
Pointer: ILocalReferenceExpression: p2 (OperationKind.LocalReferenceExpression, Type: System.Int32*) (Syntax: 'p2')
Left: IOperation: (OperationKind.None) (Syntax: '*p1')
Children(1):
ILocalReferenceExpression: p1 (OperationKind.LocalReferenceExpression, Type: System.Int32*) (Syntax: 'p1')
Right: IOperation: (OperationKind.None) (Syntax: '*p2')
Children(1):
ILocalReferenceExpression: p2 (OperationKind.LocalReferenceExpression, Type: System.Int32*) (Syntax: 'p2')
";
var expectedDiagnostics = DiagnosticDescription.None;
......@@ -228,8 +233,9 @@ void M1()
IExpressionStatement (OperationKind.ExpressionStatement) (Syntax: 'i3 = *p1;')
Expression: ISimpleAssignmentExpression (OperationKind.SimpleAssignmentExpression, Type: System.Int32) (Syntax: 'i3 = *p1')
Left: ILocalReferenceExpression: i3 (OperationKind.LocalReferenceExpression, Type: System.Int32) (Syntax: 'i3')
Right: IPointerIndirectionReferenceExpression (OperationKind.PointerIndirectionReferenceExpression, Type: System.Int32) (Syntax: '*p1')
Pointer: ILocalReferenceExpression: p1 (OperationKind.LocalReferenceExpression, Type: System.Int32*) (Syntax: 'p1')
Right: IOperation: (OperationKind.None) (Syntax: '*p1')
Children(1):
ILocalReferenceExpression: p1 (OperationKind.LocalReferenceExpression, Type: System.Int32*) (Syntax: 'p1')
";
var expectedDiagnostics = new DiagnosticDescription[] {
// CS1525: Invalid expression term ')'
......
......@@ -410,8 +410,9 @@ public unsafe int M(int *x)
}
";
string expectedOperationTree = @"
IPointerIndirectionReferenceExpression (OperationKind.PointerIndirectionReferenceExpression, Type: System.Int32) (Syntax: '*x')
Pointer: IParameterReferenceExpression: x (OperationKind.ParameterReferenceExpression, Type: System.Int32*) (Syntax: 'x')
IOperation: (OperationKind.None) (Syntax: '*x')
Children(1):
IParameterReferenceExpression: x (OperationKind.ParameterReferenceExpression, Type: System.Int32*) (Syntax: 'x')
";
var expectedDiagnostics = new DiagnosticDescription[] {
// CS0227: Unsafe code may only appear if compiling with /unsafe
......
......@@ -3107,8 +3107,9 @@ unsafe void Method()
}
";
string expectedOperationTree = @"
IPointerIndirectionReferenceExpression (OperationKind.PointerIndirectionReferenceExpression, Type: System.Int32) (Syntax: '*p2')
Pointer: ILocalReferenceExpression: p2 (OperationKind.LocalReferenceExpression, Type: System.Int32*) (Syntax: 'p2')
IOperation: (OperationKind.None) (Syntax: '*p2')
Children(1):
ILocalReferenceExpression: p2 (OperationKind.LocalReferenceExpression, Type: System.Int32*) (Syntax: 'p2')
";
VerifyOperationTreeForTest<PrefixUnaryExpressionSyntax>(source, expectedOperationTree);
......
......@@ -3495,7 +3495,9 @@ public override void Accept(OperationVisitor visitor)
internal abstract partial class BasePointerIndirectionReferenceExpression : Operation, IPointerIndirectionReferenceExpression
{
protected BasePointerIndirectionReferenceExpression(SemanticModel semanticModel, SyntaxNode syntax, ITypeSymbol type, Optional<object> constantValue, bool isImplicit) :
base(OperationKind.PointerIndirectionReferenceExpression, semanticModel, syntax, type, constantValue, isImplicit)
// API is internal for V1
// https://github.com/dotnet/roslyn/issues/21295
base(OperationKind.None, semanticModel, syntax, type, constantValue, isImplicit)
{
}
......
// 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 System.Collections.Immutable;
namespace Microsoft.CodeAnalysis.Semantics
{
/// <summary>
......@@ -11,7 +9,9 @@ namespace Microsoft.CodeAnalysis.Semantics
/// This interface is reserved for implementation by its associated APIs. We reserve the right to
/// change it in the future.
/// </remarks>
public interface IPointerIndirectionReferenceExpression : IOperation
// API moved internal for V1
// https://github.com/dotnet/roslyn/issues/21295
internal interface IPointerIndirectionReferenceExpression : IOperation
{
/// <summary>
/// Pointer to be dereferenced.
......@@ -19,4 +19,3 @@ public interface IPointerIndirectionReferenceExpression : IOperation
IOperation Pointer { get; }
}
}
......@@ -190,7 +190,7 @@ public override IOperation VisitArrayElementReferenceExpression(IArrayElementRef
return new ArrayElementReferenceExpression(Visit(operation.ArrayReference), VisitArray(operation.Indices), ((Operation)operation).SemanticModel, operation.Syntax, operation.Type, operation.ConstantValue, operation.IsImplicit);
}
public override IOperation VisitPointerIndirectionReferenceExpression(IPointerIndirectionReferenceExpression operation, object argument)
internal override IOperation VisitPointerIndirectionReferenceExpression(IPointerIndirectionReferenceExpression operation, object argument)
{
return new PointerIndirectionReferenceExpression(Visit(operation.Pointer), ((Operation)operation).SemanticModel, operation.Syntax, operation.Type, operation.ConstantValue, operation.IsImplicit);
}
......
......@@ -153,8 +153,10 @@ public enum OperationKind
SizeOfExpression = 0x202,
/// <summary>Indicates an <see cref="IAddressOfExpression"/>.</summary>
AddressOfExpression = 0x203,
/// <summary>Indicates an <see cref="IPointerIndirectionReferenceExpression"/>.</summary>
PointerIndirectionReferenceExpression = 0x204,
// <summary>Indicates an <see cref="IPointerIndirectionReferenceExpression"/>.</summary>
// API Removed for V1
// https://github.com/dotnet/roslyn/issues/21295
//PointerIndirectionReferenceExpression = 0x204,
/// <summary>Indicates an <see cref="IIsPatternExpression"/>.</summary>
IsPatternExpression = 0x205,
/// <summary>Indicates an <see cref="IIncrementExpression"/>.</summary>
......
......@@ -181,7 +181,9 @@ public virtual void VisitArrayElementReferenceExpression(IArrayElementReferenceE
DefaultVisit(operation);
}
public virtual void VisitPointerIndirectionReferenceExpression(IPointerIndirectionReferenceExpression operation)
// API moved internal for V1
// https://github.com/dotnet/roslyn/issues/21295
internal virtual void VisitPointerIndirectionReferenceExpression(IPointerIndirectionReferenceExpression operation)
{
DefaultVisit(operation);
}
......@@ -647,7 +649,9 @@ public virtual TResult VisitArrayElementReferenceExpression(IArrayElementReferen
return DefaultVisit(operation, argument);
}
public virtual TResult VisitPointerIndirectionReferenceExpression(IPointerIndirectionReferenceExpression operation, TArgument argument)
// API moved internal for V1
// https://github.com/dotnet/roslyn/issues/21295
internal virtual TResult VisitPointerIndirectionReferenceExpression(IPointerIndirectionReferenceExpression operation, TArgument argument)
{
return DefaultVisit(operation, argument);
}
......
......@@ -109,7 +109,6 @@ Microsoft.CodeAnalysis.OperationKind.ParameterReferenceExpression = 262 -> Micro
Microsoft.CodeAnalysis.OperationKind.ParenthesizedExpression = 282 -> Microsoft.CodeAnalysis.OperationKind
Microsoft.CodeAnalysis.OperationKind.PatternCaseClause = 1041 -> Microsoft.CodeAnalysis.OperationKind
Microsoft.CodeAnalysis.OperationKind.PlaceholderExpression = 770 -> Microsoft.CodeAnalysis.OperationKind
Microsoft.CodeAnalysis.OperationKind.PointerIndirectionReferenceExpression = 516 -> Microsoft.CodeAnalysis.OperationKind
Microsoft.CodeAnalysis.OperationKind.PropertyInitializer = 1027 -> Microsoft.CodeAnalysis.OperationKind
Microsoft.CodeAnalysis.OperationKind.PropertyReferenceExpression = 266 -> Microsoft.CodeAnalysis.OperationKind
Microsoft.CodeAnalysis.OperationKind.RangeCaseClause = 1036 -> Microsoft.CodeAnalysis.OperationKind
......@@ -384,8 +383,6 @@ Microsoft.CodeAnalysis.Semantics.IPatternCaseClause.GuardExpression.get -> Micro
Microsoft.CodeAnalysis.Semantics.IPatternCaseClause.Label.get -> Microsoft.CodeAnalysis.ILabelSymbol
Microsoft.CodeAnalysis.Semantics.IPatternCaseClause.Pattern.get -> Microsoft.CodeAnalysis.Semantics.IPattern
Microsoft.CodeAnalysis.Semantics.IPlaceholderExpression
Microsoft.CodeAnalysis.Semantics.IPointerIndirectionReferenceExpression
Microsoft.CodeAnalysis.Semantics.IPointerIndirectionReferenceExpression.Pointer.get -> Microsoft.CodeAnalysis.IOperation
Microsoft.CodeAnalysis.Semantics.IPropertyInitializer
Microsoft.CodeAnalysis.Semantics.IPropertyInitializer.InitializedProperty.get -> Microsoft.CodeAnalysis.IPropertySymbol
Microsoft.CodeAnalysis.Semantics.IPropertyReferenceExpression
......@@ -562,7 +559,6 @@ virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitParameterReferenc
virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitParenthesizedExpression(Microsoft.CodeAnalysis.Semantics.IParenthesizedExpression operation) -> void
virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitPatternCaseClause(Microsoft.CodeAnalysis.Semantics.IPatternCaseClause operation) -> void
virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitPlaceholderExpression(Microsoft.CodeAnalysis.Semantics.IPlaceholderExpression operation) -> void
virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitPointerIndirectionReferenceExpression(Microsoft.CodeAnalysis.Semantics.IPointerIndirectionReferenceExpression operation) -> void
virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitPropertyInitializer(Microsoft.CodeAnalysis.Semantics.IPropertyInitializer operation) -> void
virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitPropertyReferenceExpression(Microsoft.CodeAnalysis.Semantics.IPropertyReferenceExpression operation) -> void
virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor.VisitRangeCaseClause(Microsoft.CodeAnalysis.Semantics.IRangeCaseClause operation) -> void
......@@ -650,7 +646,6 @@ virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor<TArgument, TResult>.Vi
virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor<TArgument, TResult>.VisitParenthesizedExpression(Microsoft.CodeAnalysis.Semantics.IParenthesizedExpression operation, TArgument argument) -> TResult
virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor<TArgument, TResult>.VisitPatternCaseClause(Microsoft.CodeAnalysis.Semantics.IPatternCaseClause operation, TArgument argument) -> TResult
virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor<TArgument, TResult>.VisitPlaceholderExpression(Microsoft.CodeAnalysis.Semantics.IPlaceholderExpression operation, TArgument argument) -> TResult
virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor<TArgument, TResult>.VisitPointerIndirectionReferenceExpression(Microsoft.CodeAnalysis.Semantics.IPointerIndirectionReferenceExpression operation, TArgument argument) -> TResult
virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor<TArgument, TResult>.VisitPropertyInitializer(Microsoft.CodeAnalysis.Semantics.IPropertyInitializer operation, TArgument argument) -> TResult
virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor<TArgument, TResult>.VisitPropertyReferenceExpression(Microsoft.CodeAnalysis.Semantics.IPropertyReferenceExpression operation, TArgument argument) -> TResult
virtual Microsoft.CodeAnalysis.Semantics.OperationVisitor<TArgument, TResult>.VisitRangeCaseClause(Microsoft.CodeAnalysis.Semantics.IRangeCaseClause operation, TArgument argument) -> TResult
......
......@@ -652,7 +652,7 @@ public override void VisitArrayElementReferenceExpression(IArrayElementReference
VisitArray(operation.Indices, "Indices", logElementCount: true);
}
public override void VisitPointerIndirectionReferenceExpression(IPointerIndirectionReferenceExpression operation)
internal override void VisitPointerIndirectionReferenceExpression(IPointerIndirectionReferenceExpression operation)
{
LogString(nameof(IPointerIndirectionReferenceExpression));
LogCommonPropertiesAndNewLine(operation);
......
......@@ -233,7 +233,7 @@ public override void VisitArrayElementReferenceExpression(IArrayElementReference
base.VisitArrayElementReferenceExpression(operation);
}
public override void VisitPointerIndirectionReferenceExpression(IPointerIndirectionReferenceExpression operation)
internal override void VisitPointerIndirectionReferenceExpression(IPointerIndirectionReferenceExpression operation)
{
base.VisitPointerIndirectionReferenceExpression(operation);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册