private EqualsValueClauseSyntax GetDefaultValue()

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);
        }