Skip to content

Commit b209e4e

Browse files
authored
Merge pull request #3611 from sharwell/operation-wrapper
Rewrite IOperationWrapper as a wrapper structure around IOperation
2 parents 0f30141 + 9b5db19 commit b209e4e

File tree

128 files changed

+691
-292
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

128 files changed

+691
-292
lines changed

StyleCop.Analyzers/StyleCop.Analyzers.CodeGeneration/OperationLightupGenerator.cs

Lines changed: 247 additions & 140 deletions
Large diffs are not rendered by default.

StyleCop.Analyzers/StyleCop.Analyzers/Lightup/.generated/StyleCop.Analyzers.CodeGeneration/StyleCop.Analyzers.CodeGeneration.OperationLightupGenerator/IAddressOfOperationWrapper.g.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ namespace StyleCop.Analyzers.Lightup
77
using System.Collections.Immutable;
88
using Microsoft.CodeAnalysis;
99

10-
internal readonly struct IAddressOfOperationWrapper : IOperationWrapper
10+
internal readonly struct IAddressOfOperationWrapper
1111
{
1212
internal const string WrappedTypeName = "Microsoft.CodeAnalysis.Operations.IAddressOfOperation";
1313
private static readonly Type WrappedType;
@@ -27,6 +27,8 @@ private IAddressOfOperationWrapper(IOperation operation)
2727
public IOperation WrappedOperation => this.operation;
2828
public ITypeSymbol Type => this.WrappedOperation.Type;
2929
public IOperation Reference => ReferenceAccessor(this.WrappedOperation);
30+
public static explicit operator IAddressOfOperationWrapper(IOperationWrapper wrapper) => FromOperation(wrapper.WrappedOperation);
31+
public static implicit operator IOperationWrapper(IAddressOfOperationWrapper wrapper) => IOperationWrapper.FromUpcast(wrapper.WrappedOperation);
3032
public static IAddressOfOperationWrapper FromOperation(IOperation operation)
3133
{
3234
if (operation == null)

StyleCop.Analyzers/StyleCop.Analyzers/Lightup/.generated/StyleCop.Analyzers.CodeGeneration/StyleCop.Analyzers.CodeGeneration.OperationLightupGenerator/IAnonymousFunctionOperationWrapper.g.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ namespace StyleCop.Analyzers.Lightup
77
using System.Collections.Immutable;
88
using Microsoft.CodeAnalysis;
99

10-
internal readonly struct IAnonymousFunctionOperationWrapper : IOperationWrapper
10+
internal readonly struct IAnonymousFunctionOperationWrapper
1111
{
1212
internal const string WrappedTypeName = "Microsoft.CodeAnalysis.Operations.IAnonymousFunctionOperation";
1313
private static readonly Type WrappedType;
@@ -30,6 +30,8 @@ private IAnonymousFunctionOperationWrapper(IOperation operation)
3030
public ITypeSymbol Type => this.WrappedOperation.Type;
3131
public IMethodSymbol Symbol => SymbolAccessor(this.WrappedOperation);
3232
public IBlockOperationWrapper Body => IBlockOperationWrapper.FromOperation(BodyAccessor(this.WrappedOperation));
33+
public static explicit operator IAnonymousFunctionOperationWrapper(IOperationWrapper wrapper) => FromOperation(wrapper.WrappedOperation);
34+
public static implicit operator IOperationWrapper(IAnonymousFunctionOperationWrapper wrapper) => IOperationWrapper.FromUpcast(wrapper.WrappedOperation);
3335
public static IAnonymousFunctionOperationWrapper FromOperation(IOperation operation)
3436
{
3537
if (operation == null)

StyleCop.Analyzers/StyleCop.Analyzers/Lightup/.generated/StyleCop.Analyzers.CodeGeneration/StyleCop.Analyzers.CodeGeneration.OperationLightupGenerator/IAnonymousObjectCreationOperationWrapper.g.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ namespace StyleCop.Analyzers.Lightup
77
using System.Collections.Immutable;
88
using Microsoft.CodeAnalysis;
99

10-
internal readonly struct IAnonymousObjectCreationOperationWrapper : IOperationWrapper
10+
internal readonly struct IAnonymousObjectCreationOperationWrapper
1111
{
1212
internal const string WrappedTypeName = "Microsoft.CodeAnalysis.Operations.IAnonymousObjectCreationOperation";
1313
private static readonly Type WrappedType;
@@ -27,6 +27,8 @@ private IAnonymousObjectCreationOperationWrapper(IOperation operation)
2727
public IOperation WrappedOperation => this.operation;
2828
public ITypeSymbol Type => this.WrappedOperation.Type;
2929
public ImmutableArray<IOperation> Initializers => InitializersAccessor(this.WrappedOperation);
30+
public static explicit operator IAnonymousObjectCreationOperationWrapper(IOperationWrapper wrapper) => FromOperation(wrapper.WrappedOperation);
31+
public static implicit operator IOperationWrapper(IAnonymousObjectCreationOperationWrapper wrapper) => IOperationWrapper.FromUpcast(wrapper.WrappedOperation);
3032
public static IAnonymousObjectCreationOperationWrapper FromOperation(IOperation operation)
3133
{
3234
if (operation == null)

StyleCop.Analyzers/StyleCop.Analyzers/Lightup/.generated/StyleCop.Analyzers.CodeGeneration/StyleCop.Analyzers.CodeGeneration.OperationLightupGenerator/IArgumentOperationWrapper.g.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ namespace StyleCop.Analyzers.Lightup
77
using System.Collections.Immutable;
88
using Microsoft.CodeAnalysis;
99

10-
internal readonly struct IArgumentOperationWrapper : IOperationWrapper
10+
internal readonly struct IArgumentOperationWrapper
1111
{
1212
internal const string WrappedTypeName = "Microsoft.CodeAnalysis.Operations.IArgumentOperation";
1313
private static readonly Type WrappedType;
@@ -33,6 +33,8 @@ private IArgumentOperationWrapper(IOperation operation)
3333
public IOperation Value => ValueAccessor(this.WrappedOperation);
3434
public object InConversion => throw new NotImplementedException("Property 'IArgumentOperation.InConversion' has unsupported type 'CommonConversion'");
3535
public object OutConversion => throw new NotImplementedException("Property 'IArgumentOperation.OutConversion' has unsupported type 'CommonConversion'");
36+
public static explicit operator IArgumentOperationWrapper(IOperationWrapper wrapper) => FromOperation(wrapper.WrappedOperation);
37+
public static implicit operator IOperationWrapper(IArgumentOperationWrapper wrapper) => IOperationWrapper.FromUpcast(wrapper.WrappedOperation);
3638
public static IArgumentOperationWrapper FromOperation(IOperation operation)
3739
{
3840
if (operation == null)

StyleCop.Analyzers/StyleCop.Analyzers/Lightup/.generated/StyleCop.Analyzers.CodeGeneration/StyleCop.Analyzers.CodeGeneration.OperationLightupGenerator/IArrayCreationOperationWrapper.g.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ namespace StyleCop.Analyzers.Lightup
77
using System.Collections.Immutable;
88
using Microsoft.CodeAnalysis;
99

10-
internal readonly struct IArrayCreationOperationWrapper : IOperationWrapper
10+
internal readonly struct IArrayCreationOperationWrapper
1111
{
1212
internal const string WrappedTypeName = "Microsoft.CodeAnalysis.Operations.IArrayCreationOperation";
1313
private static readonly Type WrappedType;
@@ -30,6 +30,8 @@ private IArrayCreationOperationWrapper(IOperation operation)
3030
public ITypeSymbol Type => this.WrappedOperation.Type;
3131
public ImmutableArray<IOperation> DimensionSizes => DimensionSizesAccessor(this.WrappedOperation);
3232
public IArrayInitializerOperationWrapper Initializer => IArrayInitializerOperationWrapper.FromOperation(InitializerAccessor(this.WrappedOperation));
33+
public static explicit operator IArrayCreationOperationWrapper(IOperationWrapper wrapper) => FromOperation(wrapper.WrappedOperation);
34+
public static implicit operator IOperationWrapper(IArrayCreationOperationWrapper wrapper) => IOperationWrapper.FromUpcast(wrapper.WrappedOperation);
3335
public static IArrayCreationOperationWrapper FromOperation(IOperation operation)
3436
{
3537
if (operation == null)

StyleCop.Analyzers/StyleCop.Analyzers/Lightup/.generated/StyleCop.Analyzers.CodeGeneration/StyleCop.Analyzers.CodeGeneration.OperationLightupGenerator/IArrayElementReferenceOperationWrapper.g.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ namespace StyleCop.Analyzers.Lightup
77
using System.Collections.Immutable;
88
using Microsoft.CodeAnalysis;
99

10-
internal readonly struct IArrayElementReferenceOperationWrapper : IOperationWrapper
10+
internal readonly struct IArrayElementReferenceOperationWrapper
1111
{
1212
internal const string WrappedTypeName = "Microsoft.CodeAnalysis.Operations.IArrayElementReferenceOperation";
1313
private static readonly Type WrappedType;
@@ -30,6 +30,8 @@ private IArrayElementReferenceOperationWrapper(IOperation operation)
3030
public ITypeSymbol Type => this.WrappedOperation.Type;
3131
public IOperation ArrayReference => ArrayReferenceAccessor(this.WrappedOperation);
3232
public ImmutableArray<IOperation> Indices => IndicesAccessor(this.WrappedOperation);
33+
public static explicit operator IArrayElementReferenceOperationWrapper(IOperationWrapper wrapper) => FromOperation(wrapper.WrappedOperation);
34+
public static implicit operator IOperationWrapper(IArrayElementReferenceOperationWrapper wrapper) => IOperationWrapper.FromUpcast(wrapper.WrappedOperation);
3335
public static IArrayElementReferenceOperationWrapper FromOperation(IOperation operation)
3436
{
3537
if (operation == null)

StyleCop.Analyzers/StyleCop.Analyzers/Lightup/.generated/StyleCop.Analyzers.CodeGeneration/StyleCop.Analyzers.CodeGeneration.OperationLightupGenerator/IArrayInitializerOperationWrapper.g.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ namespace StyleCop.Analyzers.Lightup
77
using System.Collections.Immutable;
88
using Microsoft.CodeAnalysis;
99

10-
internal readonly struct IArrayInitializerOperationWrapper : IOperationWrapper
10+
internal readonly struct IArrayInitializerOperationWrapper
1111
{
1212
internal const string WrappedTypeName = "Microsoft.CodeAnalysis.Operations.IArrayInitializerOperation";
1313
private static readonly Type WrappedType;
@@ -27,6 +27,8 @@ private IArrayInitializerOperationWrapper(IOperation operation)
2727
public IOperation WrappedOperation => this.operation;
2828
public ITypeSymbol Type => this.WrappedOperation.Type;
2929
public ImmutableArray<IOperation> ElementValues => ElementValuesAccessor(this.WrappedOperation);
30+
public static explicit operator IArrayInitializerOperationWrapper(IOperationWrapper wrapper) => FromOperation(wrapper.WrappedOperation);
31+
public static implicit operator IOperationWrapper(IArrayInitializerOperationWrapper wrapper) => IOperationWrapper.FromUpcast(wrapper.WrappedOperation);
3032
public static IArrayInitializerOperationWrapper FromOperation(IOperation operation)
3133
{
3234
if (operation == null)

StyleCop.Analyzers/StyleCop.Analyzers/Lightup/.generated/StyleCop.Analyzers.CodeGeneration/StyleCop.Analyzers.CodeGeneration.OperationLightupGenerator/IAssignmentOperationWrapper.g.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ namespace StyleCop.Analyzers.Lightup
77
using System.Collections.Immutable;
88
using Microsoft.CodeAnalysis;
99

10-
internal readonly struct IAssignmentOperationWrapper : IOperationWrapper
10+
internal readonly struct IAssignmentOperationWrapper
1111
{
1212
internal const string WrappedTypeName = "Microsoft.CodeAnalysis.Operations.IAssignmentOperation";
1313
private static readonly Type WrappedType;
@@ -30,6 +30,8 @@ private IAssignmentOperationWrapper(IOperation operation)
3030
public ITypeSymbol Type => this.WrappedOperation.Type;
3131
public IOperation Target => TargetAccessor(this.WrappedOperation);
3232
public IOperation Value => ValueAccessor(this.WrappedOperation);
33+
public static explicit operator IAssignmentOperationWrapper(IOperationWrapper wrapper) => FromOperation(wrapper.WrappedOperation);
34+
public static implicit operator IOperationWrapper(IAssignmentOperationWrapper wrapper) => IOperationWrapper.FromUpcast(wrapper.WrappedOperation);
3335
public static IAssignmentOperationWrapper FromOperation(IOperation operation)
3436
{
3537
if (operation == null)

StyleCop.Analyzers/StyleCop.Analyzers/Lightup/.generated/StyleCop.Analyzers.CodeGeneration/StyleCop.Analyzers.CodeGeneration.OperationLightupGenerator/IAwaitOperationWrapper.g.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ namespace StyleCop.Analyzers.Lightup
77
using System.Collections.Immutable;
88
using Microsoft.CodeAnalysis;
99

10-
internal readonly struct IAwaitOperationWrapper : IOperationWrapper
10+
internal readonly struct IAwaitOperationWrapper
1111
{
1212
internal const string WrappedTypeName = "Microsoft.CodeAnalysis.Operations.IAwaitOperation";
1313
private static readonly Type WrappedType;
@@ -27,6 +27,8 @@ private IAwaitOperationWrapper(IOperation operation)
2727
public IOperation WrappedOperation => this.operation;
2828
public ITypeSymbol Type => this.WrappedOperation.Type;
2929
public IOperation Operation => OperationAccessor(this.WrappedOperation);
30+
public static explicit operator IAwaitOperationWrapper(IOperationWrapper wrapper) => FromOperation(wrapper.WrappedOperation);
31+
public static implicit operator IOperationWrapper(IAwaitOperationWrapper wrapper) => IOperationWrapper.FromUpcast(wrapper.WrappedOperation);
3032
public static IAwaitOperationWrapper FromOperation(IOperation operation)
3133
{
3234
if (operation == null)

0 commit comments

Comments
 (0)