Skip to content

Commit 852e176

Browse files
authored
Merge pull request #848 from davidegiacometti/issue-277
Null-coalescing in friendly overload
2 parents cddc9a5 + 4f03406 commit 852e176

File tree

1 file changed

+4
-8
lines changed

1 file changed

+4
-8
lines changed

src/Microsoft.Windows.CsWin32/Generator.FriendlyOverloads.cs

+4-8
Original file line numberDiff line numberDiff line change
@@ -329,10 +329,8 @@ private IEnumerable<MethodDeclarationSyntax> DeclareFriendlyOverloads(MethodDefi
329329
leadingStatements.Add(
330330
LocalDeclarationStatement(VariableDeclaration(elementType)
331331
.AddVariables(VariableDeclarator(localName.Identifier).WithInitializer(
332-
EqualsValueClause(ConditionalExpression(
333-
MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, origName, IdentifierName("HasValue")),
334-
MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, origName, IdentifierName("Value")),
335-
DefaultExpression(elementType)))))));
332+
EqualsValueClause(
333+
BinaryExpression(SyntaxKind.CoalesceExpression, origName, DefaultExpression(elementType)))))));
336334
arguments[param.SequenceNumber - 1] = Argument(ConditionalExpression(
337335
MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, origName, IdentifierName("HasValue")),
338336
PrefixUnaryExpression(SyntaxKind.AddressOfExpression, localName),
@@ -461,10 +459,8 @@ private IEnumerable<MethodDeclarationSyntax> DeclareFriendlyOverloads(MethodDefi
461459
leadingStatements.Add(
462460
LocalDeclarationStatement(VariableDeclaration(externParam.Type)
463461
.AddVariables(VariableDeclarator(localName.Identifier).WithInitializer(
464-
EqualsValueClause(ConditionalExpression(
465-
MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, origName, IdentifierName("HasValue")),
466-
MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, origName, IdentifierName("Value")),
467-
DefaultExpression(externParam.Type)))))));
462+
EqualsValueClause(
463+
BinaryExpression(SyntaxKind.CoalesceExpression, origName, DefaultExpression(externParam.Type)))))));
468464

469465
// We can't pass in null, but we can be fancy to achieve the same effect.
470466
// Unsafe.NullRef<TParamType>() or Unsafe.AsRef<TParamType>(null), depending on what's available.

0 commit comments

Comments
 (0)