@@ -2406,7 +2406,7 @@ namespace ts {
2406
2406
return createTypeReferenceNode(name, /*typeArguments*/ undefined);
2407
2407
}
2408
2408
2409
- if (context.checkAlias && type.aliasSymbol) {
2409
+ if (!context.InTypeAlias && context.checkAlias && type.aliasSymbol) {
2410
2410
const name = symbolToName(type.aliasSymbol, /*expectsIdentifier*/ false, context);
2411
2411
const typeArgumentNodes = type.aliasTypeArguments && mapToTypeNodeArray(type.aliasTypeArguments, /*addInElementTypeFlag*/ false);
2412
2412
return createTypeReferenceNode(name, typeArgumentNodes);
@@ -2546,8 +2546,11 @@ namespace ts {
2546
2546
2547
2547
if (resolved.callSignatures.length === 1 && !resolved.constructSignatures.length) {
2548
2548
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
+
2551
2554
}
2552
2555
if (resolved.constructSignatures.length === 1 && !resolved.callSignatures.length) {
2553
2556
const signature = resolved.constructSignatures[0];
@@ -2564,7 +2567,7 @@ namespace ts {
2564
2567
2565
2568
2566
2569
function shouldAddParenthesisAroundFunctionType(callSignature: Signature, context: NodeBuilderContext) {
2567
- if (context. InElementType) {
2570
+ if (InElementType) {
2568
2571
return true;
2569
2572
}
2570
2573
else if (context.InFirstTypeArgument) {
@@ -2727,6 +2730,10 @@ namespace ts {
2727
2730
2728
2731
const typeParameters = signature.typeParameters && signature.typeParameters.map(parameter => typeParameterToDeclaration(parameter, context));
2729
2732
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
+ }
2730
2737
let returnTypeNode: TypeNode;
2731
2738
if (signature.typePredicate) {
2732
2739
const typePredicate = signature.typePredicate;
0 commit comments