Skip to content

Commit 1774c67

Browse files
author
Arthur Ozga
committed
parens and this param for function type
1 parent c0adf99 commit 1774c67

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

src/compiler/checker.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2406,7 +2406,7 @@ namespace ts {
24062406
return createTypeReferenceNode(name, /*typeArguments*/ undefined);
24072407
}
24082408

2409-
if (context.checkAlias && type.aliasSymbol) {
2409+
if (!context.InTypeAlias && context.checkAlias && type.aliasSymbol) {
24102410
const name = symbolToName(type.aliasSymbol, /*expectsIdentifier*/ false, context);
24112411
const typeArgumentNodes = type.aliasTypeArguments && mapToTypeNodeArray(type.aliasTypeArguments, /*addInElementTypeFlag*/ false);
24122412
return createTypeReferenceNode(name, typeArgumentNodes);
@@ -2546,8 +2546,11 @@ namespace ts {
25462546

25472547
if (resolved.callSignatures.length === 1 && !resolved.constructSignatures.length) {
25482548
const signature = resolved.callSignatures[0];
2549-
shouldAddParenthesisAroundFunctionType(signature, context);
2550-
return <FunctionTypeNode>signatureToSignatureDeclarationHelper(signature, SyntaxKind.FunctionType, context);
2549+
const functionTypeNode = <FunctionTypeNode>signatureToSignatureDeclarationHelper(signature, SyntaxKind.FunctionType, context);
2550+
return shouldAddParenthesisAroundFunctionType(signature, context) ?
2551+
createParenthesizedTypeNode(functionTypeNode) :
2552+
functionTypeNode;
2553+
25512554
}
25522555
if (resolved.constructSignatures.length === 1 && !resolved.callSignatures.length) {
25532556
const signature = resolved.constructSignatures[0];
@@ -2564,7 +2567,7 @@ namespace ts {
25642567

25652568

25662569
function shouldAddParenthesisAroundFunctionType(callSignature: Signature, context: NodeBuilderContext) {
2567-
if (context.InElementType) {
2570+
if (InElementType) {
25682571
return true;
25692572
}
25702573
else if (context.InFirstTypeArgument) {
@@ -2727,6 +2730,10 @@ namespace ts {
27272730

27282731
const typeParameters = signature.typeParameters && signature.typeParameters.map(parameter => typeParameterToDeclaration(parameter, context));
27292732
const parameters = signature.parameters.map(parameter => symbolToParameterDeclaration(parameter, context));
2733+
if (signature.thisParameter) {
2734+
const thisParameter = symbolToParameterDeclaration(signature.thisParameter, context);
2735+
parameters.unshift(thisParameter);
2736+
}
27302737
let returnTypeNode: TypeNode;
27312738
if (signature.typePredicate) {
27322739
const typePredicate = signature.typePredicate;

0 commit comments

Comments
 (0)