Skip to content

Commit fa7ed32

Browse files
committed
Generate FromUpcast helper
1 parent 056110d commit fa7ed32

10 files changed

Lines changed: 58 additions & 19 deletions

File tree

StyleCop.Analyzers/StyleCop.Analyzers.CodeGeneration/SyntaxLightupGenerator.cs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,34 @@ private void GenerateSyntaxWrapper(in GeneratorExecutionContext context, SyntaxD
276276
})))))),
277277
expressionBody: null));
278278

279+
if (nodeData.Kind == NodeKind.Abstract)
280+
{
281+
// internal static SyntaxWrapper FromUpcast(CSharpSyntaxNode node)
282+
// {
283+
// return new SyntaxWrapper(node);
284+
// }
285+
members = members.Add(SyntaxFactory.MethodDeclaration(
286+
attributeLists: default,
287+
modifiers: SyntaxFactory.TokenList(SyntaxFactory.Token(SyntaxKind.InternalKeyword), SyntaxFactory.Token(SyntaxKind.StaticKeyword)),
288+
returnType: SyntaxFactory.IdentifierName(nodeData.WrapperName),
289+
explicitInterfaceSpecifier: null,
290+
identifier: SyntaxFactory.Identifier("FromUpcast"),
291+
typeParameterList: null,
292+
parameterList: SyntaxFactory.ParameterList(SyntaxFactory.SingletonSeparatedList(SyntaxFactory.Parameter(
293+
attributeLists: default,
294+
modifiers: default,
295+
type: SyntaxFactory.IdentifierName(concreteBase),
296+
identifier: SyntaxFactory.Identifier("node"),
297+
@default: null))),
298+
constraintClauses: default,
299+
body: SyntaxFactory.Block(
300+
SyntaxFactory.ReturnStatement(SyntaxFactory.ObjectCreationExpression(
301+
type: SyntaxFactory.IdentifierName(nodeData.WrapperName),
302+
argumentList: SyntaxFactory.ArgumentList(SyntaxFactory.SingletonSeparatedList(SyntaxFactory.Argument(SyntaxFactory.IdentifierName("node")))),
303+
initializer: null))),
304+
expressionBody: null));
305+
}
306+
279307
var wrapperStruct = SyntaxFactory.StructDeclaration(
280308
attributeLists: default,
281309
modifiers: SyntaxFactory.TokenList(SyntaxFactory.Token(SyntaxKind.InternalKeyword), SyntaxFactory.Token(SyntaxKind.ReadOnlyKeyword), SyntaxFactory.Token(SyntaxKind.PartialKeyword)),

StyleCop.Analyzers/StyleCop.Analyzers/Lightup/.generated/StyleCop.Analyzers.CodeGeneration/StyleCop.Analyzers.CodeGeneration.SyntaxLightupGenerator/BaseObjectCreationExpressionSyntaxWrapper.g.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,5 +44,10 @@ public static bool IsInstance(SyntaxNode node)
4444
{
4545
return node != null && LightupHelpers.CanWrapNode(node, WrappedType);
4646
}
47+
48+
internal static BaseObjectCreationExpressionSyntaxWrapper FromUpcast(ExpressionSyntax node)
49+
{
50+
return new BaseObjectCreationExpressionSyntaxWrapper(node);
51+
}
4752
}
4853
}

StyleCop.Analyzers/StyleCop.Analyzers/Lightup/.generated/StyleCop.Analyzers.CodeGeneration/StyleCop.Analyzers.CodeGeneration.SyntaxLightupGenerator/BaseParameterSyntaxWrapper.g.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,5 +44,10 @@ public static bool IsInstance(SyntaxNode node)
4444
{
4545
return node != null && LightupHelpers.CanWrapNode(node, WrappedType);
4646
}
47+
48+
internal static BaseParameterSyntaxWrapper FromUpcast(CSharpSyntaxNode node)
49+
{
50+
return new BaseParameterSyntaxWrapper(node);
51+
}
4752
}
4853
}

StyleCop.Analyzers/StyleCop.Analyzers/Lightup/.generated/StyleCop.Analyzers.CodeGeneration/StyleCop.Analyzers.CodeGeneration.SyntaxLightupGenerator/CommonForEachStatementSyntaxWrapper.g.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,5 +44,10 @@ public static bool IsInstance(SyntaxNode node)
4444
{
4545
return node != null && LightupHelpers.CanWrapNode(node, WrappedType);
4646
}
47+
48+
internal static CommonForEachStatementSyntaxWrapper FromUpcast(StatementSyntax node)
49+
{
50+
return new CommonForEachStatementSyntaxWrapper(node);
51+
}
4752
}
4853
}

StyleCop.Analyzers/StyleCop.Analyzers/Lightup/.generated/StyleCop.Analyzers.CodeGeneration/StyleCop.Analyzers.CodeGeneration.SyntaxLightupGenerator/ExpressionOrPatternSyntaxWrapper.g.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,5 +44,10 @@ public static bool IsInstance(SyntaxNode node)
4444
{
4545
return node != null && LightupHelpers.CanWrapNode(node, WrappedType);
4646
}
47+
48+
internal static ExpressionOrPatternSyntaxWrapper FromUpcast(CSharpSyntaxNode node)
49+
{
50+
return new ExpressionOrPatternSyntaxWrapper(node);
51+
}
4752
}
4853
}

StyleCop.Analyzers/StyleCop.Analyzers/Lightup/.generated/StyleCop.Analyzers.CodeGeneration/StyleCop.Analyzers.CodeGeneration.SyntaxLightupGenerator/PatternSyntaxWrapper.g.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,5 +44,10 @@ public static bool IsInstance(SyntaxNode node)
4444
{
4545
return node != null && LightupHelpers.CanWrapNode(node, WrappedType);
4646
}
47+
48+
internal static PatternSyntaxWrapper FromUpcast(CSharpSyntaxNode node)
49+
{
50+
return new PatternSyntaxWrapper(node);
51+
}
4752
}
4853
}

StyleCop.Analyzers/StyleCop.Analyzers/Lightup/.generated/StyleCop.Analyzers.CodeGeneration/StyleCop.Analyzers.CodeGeneration.SyntaxLightupGenerator/VariableDesignationSyntaxWrapper.g.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,5 +44,10 @@ public static bool IsInstance(SyntaxNode node)
4444
{
4545
return node != null && LightupHelpers.CanWrapNode(node, WrappedType);
4646
}
47+
48+
internal static VariableDesignationSyntaxWrapper FromUpcast(CSharpSyntaxNode node)
49+
{
50+
return new VariableDesignationSyntaxWrapper(node);
51+
}
4752
}
4853
}

StyleCop.Analyzers/StyleCop.Analyzers/Lightup/CommonForEachStatementSyntaxWrapper.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -142,10 +142,5 @@ public CommonForEachStatementSyntaxWrapper WithStatement(StatementSyntax stateme
142142
{
143143
return new CommonForEachStatementSyntaxWrapper(WithStatementAccessor(this.SyntaxNode, statement));
144144
}
145-
146-
internal static CommonForEachStatementSyntaxWrapper FromUpcast(StatementSyntax node)
147-
{
148-
return new CommonForEachStatementSyntaxWrapper(node);
149-
}
150145
}
151146
}

StyleCop.Analyzers/StyleCop.Analyzers/Lightup/PatternSyntaxWrapper.cs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33

44
namespace StyleCop.Analyzers.Lightup
55
{
6-
using System;
7-
using Microsoft.CodeAnalysis;
86
using Microsoft.CodeAnalysis.CSharp;
97

108
internal partial struct PatternSyntaxWrapper : ISyntaxWrapper<CSharpSyntaxNode>
@@ -13,10 +11,5 @@ static PatternSyntaxWrapper()
1311
{
1412
WrappedType = SyntaxWrapperHelper.GetWrappedType(typeof(PatternSyntaxWrapper));
1513
}
16-
17-
internal static PatternSyntaxWrapper FromUpcast(CSharpSyntaxNode node)
18-
{
19-
return new PatternSyntaxWrapper(node);
20-
}
2114
}
2215
}

StyleCop.Analyzers/StyleCop.Analyzers/Lightup/VariableDesignationSyntaxWrapper.cs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33

44
namespace StyleCop.Analyzers.Lightup
55
{
6-
using System;
7-
using Microsoft.CodeAnalysis;
86
using Microsoft.CodeAnalysis.CSharp;
97

108
internal partial struct VariableDesignationSyntaxWrapper : ISyntaxWrapper<CSharpSyntaxNode>
@@ -13,10 +11,5 @@ static VariableDesignationSyntaxWrapper()
1311
{
1412
WrappedType = SyntaxWrapperHelper.GetWrappedType(typeof(VariableDesignationSyntaxWrapper));
1513
}
16-
17-
internal static VariableDesignationSyntaxWrapper FromUpcast(CSharpSyntaxNode node)
18-
{
19-
return new VariableDesignationSyntaxWrapper(node);
20-
}
2114
}
2215
}

0 commit comments

Comments
 (0)