@@ -2810,7 +2810,10 @@ namespace ts {
2810
2810
2811
2811
function symbolToParameterDeclaration(parameterSymbol: Symbol, context: NodeBuilderContext): ParameterDeclaration {
2812
2812
const parameterDeclaration = <ParameterDeclaration>getDeclarationOfKind(parameterSymbol, SyntaxKind.Parameter);
2813
- const parameterType = getTypeOfSymbol(parameterSymbol);
2813
+ let parameterType = getTypeOfSymbol(parameterSymbol);
2814
+ if (isRequiredInitializedParameter(parameterDeclaration)) {
2815
+ parameterType = includeFalsyTypes(parameterType, TypeFlags.Undefined);
2816
+ }
2814
2817
const parameterTypeNode = typeToTypeNodeHelper(parameterType, context);
2815
2818
let name: BindingName;
2816
2819
if (parameterDeclaration.name.kind === SyntaxKind.Identifier) {
@@ -2820,25 +2823,19 @@ namespace ts {
2820
2823
Debug.assert(parameterDeclaration.name.kind === SyntaxKind.ArrayBindingPattern || parameterDeclaration.name.kind === SyntaxKind.ObjectBindingPattern);
2821
2824
name = cloneBindingName(parameterDeclaration.name);
2822
2825
}
2823
- let questionToken: Token<SyntaxKind.QuestionToken> | undefined;
2824
- let initializer: Expression | undefined;
2825
- if (isOptionalParameter(parameterDeclaration)) {
2826
- questionToken = createToken(SyntaxKind.QuestionToken);
2827
- }
2828
- else {
2829
- // TODO(aozgaa): In the future, check initializer accessibility.
2830
- initializer = parameterDeclaration.initializer;
2831
- }
2826
+ const questionToken = isOptionalParameter(parameterDeclaration) ? createToken(SyntaxKind.QuestionToken) : undefined;
2827
+ const dotDotDotToken = (parameterDeclaration ? isRestParameter(parameterDeclaration) : isTransientSymbol(parameterSymbol) && parameterSymbol.isRestParameter) ?
2828
+ createToken(SyntaxKind.DotDotDotToken) :
2829
+ undefined;
2830
+
2832
2831
const parameterNode = createParameter(
2833
2832
/*decorators*/ undefined,
2834
2833
cloneNodeArray(parameterDeclaration.modifiers),
2835
- (parameterDeclaration ? isRestParameter(parameterDeclaration) : isTransientSymbol(parameterSymbol) && parameterSymbol.isRestParameter) ?
2836
- createToken(SyntaxKind.DotDotDotToken) :
2837
- undefined,
2834
+ dotDotDotToken,
2838
2835
name,
2839
2836
questionToken,
2840
2837
parameterTypeNode,
2841
- initializer);
2838
+ /* initializer*/ undefined );
2842
2839
return parameterNode;
2843
2840
2844
2841
function cloneBindingName(node: BindingName): BindingName {
0 commit comments