Skip to content

Commit 5b17a6d

Browse files
committed
Generate wrapper properties
1 parent efeef8d commit 5b17a6d

File tree

76 files changed

+1299
-696
lines changed

Some content is hidden

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

76 files changed

+1299
-696
lines changed

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

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,113 @@ private void GenerateSyntaxWrapper(in GeneratorExecutionContext context, SyntaxD
326326
initializer: null,
327327
semicolonToken: SyntaxFactory.Token(SyntaxKind.SemicolonToken)));
328328

329+
// public T Field
330+
// {
331+
// get
332+
// {
333+
// return ...;
334+
// }
335+
// }
336+
foreach (var field in nodeData.Fields)
337+
{
338+
if (field.IsSkipped)
339+
{
340+
continue;
341+
}
342+
343+
TypeSyntax propertyType = SyntaxFactory.ParseTypeName(field.GetAccessorResultType(syntaxData));
344+
ExpressionSyntax returnExpression;
345+
if (field.IsOverride)
346+
{
347+
var declaringNode = field.GetDeclaringNode(syntaxData);
348+
if (declaringNode.WrapperName is not null)
349+
{
350+
// ((CommonForEachStatementSyntaxWrapper)this).OpenParenToken
351+
returnExpression = SyntaxFactory.MemberAccessExpression(
352+
SyntaxKind.SimpleMemberAccessExpression,
353+
expression: SyntaxFactory.ParenthesizedExpression(
354+
SyntaxFactory.CastExpression(
355+
type: SyntaxFactory.IdentifierName(declaringNode.WrapperName ?? declaringNode.Name),
356+
expression: SyntaxFactory.ThisExpression())),
357+
name: SyntaxFactory.IdentifierName(field.Name));
358+
}
359+
else
360+
{
361+
// this.SyntaxNode.OpenParenToken
362+
returnExpression = SyntaxFactory.MemberAccessExpression(
363+
SyntaxKind.SimpleMemberAccessExpression,
364+
expression: SyntaxFactory.MemberAccessExpression(
365+
SyntaxKind.SimpleMemberAccessExpression,
366+
expression: SyntaxFactory.ThisExpression(),
367+
name: SyntaxFactory.IdentifierName("SyntaxNode")),
368+
name: SyntaxFactory.IdentifierName(field.Name));
369+
}
370+
}
371+
else if (field.IsWrappedSeparatedSyntaxList(syntaxData, out var elementNode))
372+
{
373+
// PatternAccessor(this.SyntaxNode)
374+
returnExpression = SyntaxFactory.InvocationExpression(
375+
expression: SyntaxFactory.IdentifierName(field.AccessorName),
376+
argumentList: SyntaxFactory.ArgumentList(SyntaxFactory.SingletonSeparatedList(SyntaxFactory.Argument(
377+
SyntaxFactory.MemberAccessExpression(
378+
SyntaxKind.SimpleMemberAccessExpression,
379+
expression: SyntaxFactory.ThisExpression(),
380+
name: SyntaxFactory.IdentifierName("SyntaxNode"))))));
381+
}
382+
else if (syntaxData.TryGetNode(field.Type) is { } fieldNodeType)
383+
{
384+
// PatternAccessor(this.SyntaxNode)
385+
returnExpression = SyntaxFactory.InvocationExpression(
386+
expression: SyntaxFactory.IdentifierName(field.AccessorName),
387+
argumentList: SyntaxFactory.ArgumentList(SyntaxFactory.SingletonSeparatedList(SyntaxFactory.Argument(
388+
SyntaxFactory.MemberAccessExpression(
389+
SyntaxKind.SimpleMemberAccessExpression,
390+
expression: SyntaxFactory.ThisExpression(),
391+
name: SyntaxFactory.IdentifierName("SyntaxNode"))))));
392+
393+
if (fieldNodeType.WrapperName is not null)
394+
{
395+
// (PatternSyntaxWrapper)...
396+
propertyType = SyntaxFactory.IdentifierName(fieldNodeType.WrapperName);
397+
returnExpression = SyntaxFactory.CastExpression(
398+
type: SyntaxFactory.IdentifierName(fieldNodeType.WrapperName),
399+
expression: returnExpression);
400+
}
401+
}
402+
else
403+
{
404+
// PatternAccessor(this.SyntaxNode)
405+
returnExpression = SyntaxFactory.InvocationExpression(
406+
expression: SyntaxFactory.IdentifierName(field.AccessorName),
407+
argumentList: SyntaxFactory.ArgumentList(SyntaxFactory.SingletonSeparatedList(SyntaxFactory.Argument(
408+
SyntaxFactory.MemberAccessExpression(
409+
SyntaxKind.SimpleMemberAccessExpression,
410+
expression: SyntaxFactory.ThisExpression(),
411+
name: SyntaxFactory.IdentifierName("SyntaxNode"))))));
412+
}
413+
414+
// public T Field
415+
// {
416+
// get
417+
// {
418+
// return ...;
419+
// }
420+
// }
421+
members = members.Add(SyntaxFactory.PropertyDeclaration(
422+
attributeLists: default,
423+
modifiers: SyntaxFactory.TokenList(SyntaxFactory.Token(SyntaxKind.PublicKeyword)),
424+
type: propertyType,
425+
explicitInterfaceSpecifier: null,
426+
identifier: SyntaxFactory.Identifier(field.Name),
427+
accessorList: SyntaxFactory.AccessorList(SyntaxFactory.SingletonList(SyntaxFactory.AccessorDeclaration(
428+
SyntaxKind.GetAccessorDeclaration,
429+
SyntaxFactory.Block(
430+
SyntaxFactory.ReturnStatement(returnExpression))))),
431+
expressionBody: null,
432+
initializer: null,
433+
semicolonToken: default));
434+
}
435+
329436
// public static explicit operator WhenClauseSyntaxWrapper(SyntaxNode node)
330437
// {
331438
// if (node == null)

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

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,30 @@ private BaseObjectCreationExpressionSyntaxWrapper(ExpressionSyntax node)
3737
}
3838

3939
public ExpressionSyntax SyntaxNode => this.node;
40+
public SyntaxToken NewKeyword
41+
{
42+
get
43+
{
44+
return NewKeywordAccessor(this.SyntaxNode);
45+
}
46+
}
47+
48+
public ArgumentListSyntax ArgumentList
49+
{
50+
get
51+
{
52+
return ArgumentListAccessor(this.SyntaxNode);
53+
}
54+
}
55+
56+
public InitializerExpressionSyntax Initializer
57+
{
58+
get
59+
{
60+
return InitializerAccessor(this.SyntaxNode);
61+
}
62+
}
63+
4064
public static explicit operator BaseObjectCreationExpressionSyntaxWrapper(SyntaxNode node)
4165
{
4266
if (node == null)

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

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,30 @@ private BaseParameterSyntaxWrapper(CSharpSyntaxNode node)
3737
}
3838

3939
public CSharpSyntaxNode SyntaxNode => this.node;
40+
public SyntaxList<AttributeListSyntax> AttributeLists
41+
{
42+
get
43+
{
44+
return AttributeListsAccessor(this.SyntaxNode);
45+
}
46+
}
47+
48+
public SyntaxTokenList Modifiers
49+
{
50+
get
51+
{
52+
return ModifiersAccessor(this.SyntaxNode);
53+
}
54+
}
55+
56+
public TypeSyntax Type
57+
{
58+
get
59+
{
60+
return TypeAccessor(this.SyntaxNode);
61+
}
62+
}
63+
4064
public static explicit operator BaseParameterSyntaxWrapper(SyntaxNode node)
4165
{
4266
if (node == null)

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

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,30 @@ private BinaryPatternSyntaxWrapper(CSharpSyntaxNode node)
3737
}
3838

3939
public CSharpSyntaxNode SyntaxNode => this.node;
40+
public PatternSyntaxWrapper Left
41+
{
42+
get
43+
{
44+
return (PatternSyntaxWrapper)LeftAccessor(this.SyntaxNode);
45+
}
46+
}
47+
48+
public SyntaxToken OperatorToken
49+
{
50+
get
51+
{
52+
return OperatorTokenAccessor(this.SyntaxNode);
53+
}
54+
}
55+
56+
public PatternSyntaxWrapper Right
57+
{
58+
get
59+
{
60+
return (PatternSyntaxWrapper)RightAccessor(this.SyntaxNode);
61+
}
62+
}
63+
4064
public static explicit operator BinaryPatternSyntaxWrapper(SyntaxNode node)
4165
{
4266
if (node == null)

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

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,38 @@ private CasePatternSwitchLabelSyntaxWrapper(SwitchLabelSyntax node)
3737
}
3838

3939
public SwitchLabelSyntax SyntaxNode => this.node;
40+
public SyntaxToken Keyword
41+
{
42+
get
43+
{
44+
return this.SyntaxNode.Keyword;
45+
}
46+
}
47+
48+
public PatternSyntaxWrapper Pattern
49+
{
50+
get
51+
{
52+
return (PatternSyntaxWrapper)PatternAccessor(this.SyntaxNode);
53+
}
54+
}
55+
56+
public WhenClauseSyntaxWrapper WhenClause
57+
{
58+
get
59+
{
60+
return (WhenClauseSyntaxWrapper)WhenClauseAccessor(this.SyntaxNode);
61+
}
62+
}
63+
64+
public SyntaxToken ColonToken
65+
{
66+
get
67+
{
68+
return this.SyntaxNode.ColonToken;
69+
}
70+
}
71+
4072
public static explicit operator CasePatternSwitchLabelSyntaxWrapper(SyntaxNode node)
4173
{
4274
if (node == null)

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

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,62 @@ private CommonForEachStatementSyntaxWrapper(StatementSyntax node)
5353
}
5454

5555
public StatementSyntax SyntaxNode => this.node;
56+
public SyntaxToken AwaitKeyword
57+
{
58+
get
59+
{
60+
return AwaitKeywordAccessor(this.SyntaxNode);
61+
}
62+
}
63+
64+
public SyntaxToken ForEachKeyword
65+
{
66+
get
67+
{
68+
return ForEachKeywordAccessor(this.SyntaxNode);
69+
}
70+
}
71+
72+
public SyntaxToken OpenParenToken
73+
{
74+
get
75+
{
76+
return OpenParenTokenAccessor(this.SyntaxNode);
77+
}
78+
}
79+
80+
public SyntaxToken InKeyword
81+
{
82+
get
83+
{
84+
return InKeywordAccessor(this.SyntaxNode);
85+
}
86+
}
87+
88+
public ExpressionSyntax Expression
89+
{
90+
get
91+
{
92+
return ExpressionAccessor(this.SyntaxNode);
93+
}
94+
}
95+
96+
public SyntaxToken CloseParenToken
97+
{
98+
get
99+
{
100+
return CloseParenTokenAccessor(this.SyntaxNode);
101+
}
102+
}
103+
104+
public StatementSyntax Statement
105+
{
106+
get
107+
{
108+
return StatementAccessor(this.SyntaxNode);
109+
}
110+
}
111+
56112
public static explicit operator CommonForEachStatementSyntaxWrapper(SyntaxNode node)
57113
{
58114
if (node == null)

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,14 @@ private ConstantPatternSyntaxWrapper(CSharpSyntaxNode node)
2929
}
3030

3131
public CSharpSyntaxNode SyntaxNode => this.node;
32+
public ExpressionSyntax Expression
33+
{
34+
get
35+
{
36+
return ExpressionAccessor(this.SyntaxNode);
37+
}
38+
}
39+
3240
public static explicit operator ConstantPatternSyntaxWrapper(SyntaxNode node)
3341
{
3442
if (node == null)

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,22 @@ private DeclarationExpressionSyntaxWrapper(ExpressionSyntax node)
3333
}
3434

3535
public ExpressionSyntax SyntaxNode => this.node;
36+
public TypeSyntax Type
37+
{
38+
get
39+
{
40+
return TypeAccessor(this.SyntaxNode);
41+
}
42+
}
43+
44+
public VariableDesignationSyntaxWrapper Designation
45+
{
46+
get
47+
{
48+
return (VariableDesignationSyntaxWrapper)DesignationAccessor(this.SyntaxNode);
49+
}
50+
}
51+
3652
public static explicit operator DeclarationExpressionSyntaxWrapper(SyntaxNode node)
3753
{
3854
if (node == null)

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

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,22 @@ private DeclarationPatternSyntaxWrapper(CSharpSyntaxNode node)
3333
}
3434

3535
public CSharpSyntaxNode SyntaxNode => this.node;
36+
public TypeSyntax Type
37+
{
38+
get
39+
{
40+
return TypeAccessor(this.SyntaxNode);
41+
}
42+
}
43+
44+
public VariableDesignationSyntaxWrapper Designation
45+
{
46+
get
47+
{
48+
return (VariableDesignationSyntaxWrapper)DesignationAccessor(this.SyntaxNode);
49+
}
50+
}
51+
3652
public static explicit operator DeclarationPatternSyntaxWrapper(SyntaxNode node)
3753
{
3854
if (node == null)

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,14 @@ private DefaultConstraintSyntaxWrapper(TypeParameterConstraintSyntax node)
2929
}
3030

3131
public TypeParameterConstraintSyntax SyntaxNode => this.node;
32+
public SyntaxToken DefaultKeyword
33+
{
34+
get
35+
{
36+
return DefaultKeywordAccessor(this.SyntaxNode);
37+
}
38+
}
39+
3240
public static explicit operator DefaultConstraintSyntaxWrapper(SyntaxNode node)
3341
{
3442
if (node == null)

0 commit comments

Comments
 (0)