Skip to content

Commit ac68e8d

Browse files
author
Arthur Ozga
committed
initializer issues
1 parent 51c76ac commit ac68e8d

File tree

1 file changed

+11
-14
lines changed

1 file changed

+11
-14
lines changed

src/compiler/checker.ts

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2810,7 +2810,10 @@ namespace ts {
28102810

28112811
function symbolToParameterDeclaration(parameterSymbol: Symbol, context: NodeBuilderContext): ParameterDeclaration {
28122812
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+
}
28142817
const parameterTypeNode = typeToTypeNodeHelper(parameterType, context);
28152818
let name: BindingName;
28162819
if (parameterDeclaration.name.kind === SyntaxKind.Identifier) {
@@ -2820,25 +2823,19 @@ namespace ts {
28202823
Debug.assert(parameterDeclaration.name.kind === SyntaxKind.ArrayBindingPattern || parameterDeclaration.name.kind === SyntaxKind.ObjectBindingPattern);
28212824
name = cloneBindingName(parameterDeclaration.name);
28222825
}
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+
28322831
const parameterNode = createParameter(
28332832
/*decorators*/ undefined,
28342833
cloneNodeArray(parameterDeclaration.modifiers),
2835-
(parameterDeclaration ? isRestParameter(parameterDeclaration) : isTransientSymbol(parameterSymbol) && parameterSymbol.isRestParameter) ?
2836-
createToken(SyntaxKind.DotDotDotToken) :
2837-
undefined,
2834+
dotDotDotToken,
28382835
name,
28392836
questionToken,
28402837
parameterTypeNode,
2841-
initializer);
2838+
/*initializer*/ undefined);
28422839
return parameterNode;
28432840

28442841
function cloneBindingName(node: BindingName): BindingName {

0 commit comments

Comments
 (0)