in src/DurableFunctions.TypedInterfaces/SourceGenerator/Generators/WrapperImplementationGenerator.cs [327:378]
private EqualsValueClauseSyntax GetDefaultValue(IParameterSymbol parameterSymbol)
{
if (!parameterSymbol.HasExplicitDefaultValue)
return null;
ExpressionSyntax defaultExpression;
var explicitDefaultValue = parameterSymbol.ExplicitDefaultValue;
if (explicitDefaultValue is bool defaultBoolValue)
{
defaultExpression = SyntaxFactory.LiteralExpression(
defaultBoolValue
? SyntaxKind.TrueLiteralExpression
: SyntaxKind.FalseLiteralExpression
);
}
else if (parameterSymbol.ExplicitDefaultValue is string stringDefaultValue)
{
defaultExpression = SyntaxFactory.LiteralExpression(
SyntaxKind.StringLiteralExpression,
SyntaxFactory.Literal(stringDefaultValue)
);
}
else if (parameterSymbol.ExplicitDefaultValue is char charDefaultValue)
{
defaultExpression = SyntaxFactory.LiteralExpression(
SyntaxKind.CharacterLiteralExpression,
SyntaxFactory.Literal(charDefaultValue)
);
}
else if (parameterSymbol.ExplicitDefaultValue == null)
{
if (parameterSymbol.Type.IsValueType)
{
defaultExpression = SyntaxFactory.DefaultExpression(
SyntaxFactory.IdentifierName(parameterSymbol.Type.ToPrettyString())
);
}
else
{
defaultExpression = SyntaxFactory.LiteralExpression(
SyntaxKind.NullLiteralExpression
);
}
}
else
{
throw new ArgumentException("Unknown parameter type.");
}
return SyntaxFactory.EqualsValueClause(defaultExpression);
}