Skip to content

Commit e349484

Browse files
committed
Simplify
1 parent 10954bb commit e349484

1 file changed

Lines changed: 30 additions & 58 deletions

File tree

WpfAnalyzers/CodeFixes/ImplementValueConverterFix.cs

Lines changed: 30 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,34 @@ private static TypeSyntax ArrayType(TypeSyntax type) => SyntaxFactory.ArrayType(
123123
SyntaxFactory.SingletonSeparatedList<ExpressionSyntax>(
124124
SyntaxFactory.OmittedArraySizeExpression()))));
125125

126+
private static ThrowStatementSyntax ThrowNotSupportedException(string containingTypeName, SyntaxGenerator generator)
127+
{
128+
return (ThrowStatementSyntax)generator.ThrowStatement(
129+
generator.ObjectCreationExpression(
130+
ParseTypeName("System.NotSupportedException"),
131+
SyntaxFactory.Argument(
132+
expression: SyntaxFactory.InterpolatedStringExpression(
133+
stringStartToken: SyntaxFactory.Token(SyntaxKind.InterpolatedStringStartToken),
134+
contents: SyntaxFactory.List(
135+
new InterpolatedStringContentSyntax[]
136+
{
137+
SyntaxFactory.Interpolation(
138+
openBraceToken: SyntaxFactory.Token(SyntaxKind.OpenBraceToken),
139+
expression: (ExpressionSyntax)generator.NameOfExpression(SyntaxFactory.ParseTypeName(containingTypeName)),
140+
alignmentClause: default,
141+
formatClause: default,
142+
closeBraceToken: SyntaxFactory.Token(SyntaxKind.CloseBraceToken)),
143+
SyntaxFactory.InterpolatedStringText(
144+
textToken: SyntaxFactory.Token(
145+
leading: default,
146+
kind: SyntaxKind.InterpolatedStringTextToken,
147+
text: " can only be used in OneWay bindings",
148+
valueText: " can only be used in OneWay bindings",
149+
trailing: default)),
150+
}),
151+
stringEndToken: SyntaxFactory.Token(SyntaxKind.InterpolatedStringEndToken)))));
152+
}
153+
126154
private static class IValueConverter
127155
{
128156
internal static MethodDeclarationSyntax Convert(SyntaxGenerator generator, NullableContext nullableContext)
@@ -153,36 +181,8 @@ internal static MethodDeclarationSyntax ConvertBack(SyntaxGenerator generator, s
153181
generator.ParameterDeclaration("parameter", Object(nullableContext)),
154182
generator.ParameterDeclaration("culture", ParseTypeName("System.Globalization.CultureInfo")),
155183
},
156-
statements: new[] { Throw() }))
184+
statements: new[] { ThrowNotSupportedException(containingTypeName, generator) }))
157185
.WithExplicitInterfaceSpecifier(SyntaxFactory.ExplicitInterfaceSpecifier(SyntaxFactory.ParseName("IValueConverter")));
158-
159-
ThrowStatementSyntax Throw()
160-
{
161-
return (ThrowStatementSyntax)generator.ThrowStatement(
162-
generator.ObjectCreationExpression(
163-
ParseTypeName("System.NotSupportedException"),
164-
SyntaxFactory.Argument(
165-
expression: SyntaxFactory.InterpolatedStringExpression(
166-
stringStartToken: SyntaxFactory.Token(SyntaxKind.InterpolatedStringStartToken),
167-
contents: SyntaxFactory.List(
168-
new InterpolatedStringContentSyntax[]
169-
{
170-
SyntaxFactory.Interpolation(
171-
openBraceToken: SyntaxFactory.Token(SyntaxKind.OpenBraceToken),
172-
expression: (ExpressionSyntax)generator.NameOfExpression(SyntaxFactory.ParseTypeName(containingTypeName)),
173-
alignmentClause: default,
174-
formatClause: default,
175-
closeBraceToken: SyntaxFactory.Token(SyntaxKind.CloseBraceToken)),
176-
SyntaxFactory.InterpolatedStringText(
177-
textToken: SyntaxFactory.Token(
178-
leading: default,
179-
kind: SyntaxKind.InterpolatedStringTextToken,
180-
text: " can only be used in OneWay bindings",
181-
valueText: " can only be used in OneWay bindings",
182-
trailing: default)),
183-
}),
184-
stringEndToken: SyntaxFactory.Token(SyntaxKind.InterpolatedStringEndToken)))));
185-
}
186186
}
187187
}
188188

@@ -216,36 +216,8 @@ internal static MethodDeclarationSyntax ConvertBack(string containingTypeName, S
216216
generator.ParameterDeclaration("parameter", Object(nullableContext)),
217217
generator.ParameterDeclaration("culture", ParseTypeName("System.Globalization.CultureInfo")),
218218
},
219-
statements: new[] { Throw() }))
219+
statements: new[] { ThrowNotSupportedException(containingTypeName, generator) }))
220220
.WithExplicitInterfaceSpecifier(SyntaxFactory.ExplicitInterfaceSpecifier(SyntaxFactory.ParseName("System.Windows.Data.IMultiValueConverter").WithSimplifiedNames()));
221-
222-
ThrowStatementSyntax Throw()
223-
{
224-
return (ThrowStatementSyntax)generator.ThrowStatement(
225-
generator.ObjectCreationExpression(
226-
ParseTypeName("System.NotSupportedException"),
227-
SyntaxFactory.Argument(
228-
expression: SyntaxFactory.InterpolatedStringExpression(
229-
stringStartToken: SyntaxFactory.Token(SyntaxKind.InterpolatedStringStartToken),
230-
contents: SyntaxFactory.List(
231-
new InterpolatedStringContentSyntax[]
232-
{
233-
SyntaxFactory.Interpolation(
234-
openBraceToken: SyntaxFactory.Token(SyntaxKind.OpenBraceToken),
235-
expression: (ExpressionSyntax)generator.NameOfExpression(SyntaxFactory.ParseTypeName(containingTypeName)),
236-
alignmentClause: default,
237-
formatClause: default,
238-
closeBraceToken: SyntaxFactory.Token(SyntaxKind.CloseBraceToken)),
239-
SyntaxFactory.InterpolatedStringText(
240-
textToken: SyntaxFactory.Token(
241-
leading: default,
242-
kind: SyntaxKind.InterpolatedStringTextToken,
243-
text: " can only be used in OneWay bindings",
244-
valueText: " can only be used in OneWay bindings",
245-
trailing: default)),
246-
}),
247-
stringEndToken: SyntaxFactory.Token(SyntaxKind.InterpolatedStringEndToken)))));
248-
}
249221
}
250222
}
251223
}

0 commit comments

Comments
 (0)