Skip to content

Commit 5b739cf

Browse files
author
Arthur Ozga
committed
respond to comments
1 parent 67587cb commit 5b739cf

13 files changed

+180
-68
lines changed

src/compiler/checker.ts

Lines changed: 84 additions & 34 deletions
Large diffs are not rendered by default.

src/compiler/core.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1067,9 +1067,6 @@ namespace ts {
10671067
/** Does nothing. */
10681068
export function noop(): void {}
10691069

1070-
/** Returns its first argument. */
1071-
export function identity<X>(x: X): X { return x; }
1072-
10731070
/** Throws an error because a function is not implemented. */
10741071
export function notImplemented(): never {
10751072
throw new Error("Not implemented");

src/compiler/transformers/es2017.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ namespace ts {
125125
visitNodes(node.modifiers, visitor, isModifier),
126126
node.asteriskToken,
127127
node.name,
128-
node.questionToken,
128+
/*questionToken*/ undefined,
129129
/*typeParameters*/ undefined,
130130
visitParameterList(node.parameters, visitor, context),
131131
/*type*/ undefined,

src/compiler/transformers/esnext.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -475,7 +475,7 @@ namespace ts {
475475
/*modifiers*/ undefined,
476476
node.dotDotDotToken,
477477
getGeneratedNameForNode(node),
478-
node.questionToken,
478+
/*questionToken*/ undefined,
479479
/*type*/ undefined,
480480
visitNode(node.initializer, visitor, isExpression)
481481
);
@@ -541,7 +541,7 @@ namespace ts {
541541
? undefined
542542
: node.asteriskToken,
543543
visitNode(node.name, visitor, isPropertyName),
544-
visitNode(node.questionToken, visitor, isToken),
544+
visitNode(/*questionToken*/ undefined, visitor, isToken),
545545
/*typeParameters*/ undefined,
546546
visitParameterList(node.parameters, visitor, context),
547547
/*type*/ undefined,

src/compiler/transformers/ts.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2049,7 +2049,7 @@ namespace ts {
20492049
visitNodes(node.modifiers, modifierVisitor, isModifier),
20502050
node.asteriskToken,
20512051
visitPropertyNameOfClassElement(node),
2052-
node.questionToken,
2052+
/*questionToken*/ undefined,
20532053
/*typeParameters*/ undefined,
20542054
visitParameterList(node.parameters, visitor, context),
20552055
/*type*/ undefined,

src/compiler/types.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2473,11 +2473,11 @@ namespace ts {
24732473
getNonNullableType(type: Type): Type;
24742474

24752475
/** Note that the resulting nodes cannot be checked. */
2476-
createTypeNode(type: Type, enclosingDeclaration: Node): TypeNode;
2476+
typeToTypeNode(type: Type, enclosingDeclaration: Node): TypeNode;
24772477
/** Note that the resulting nodes cannot be checked. */
2478-
createIndexSignatureFromIndexInfo(indexInfo: IndexInfo, kind: IndexKind, enclosingDeclaration: Node): IndexSignatureDeclaration;
2478+
indexInfoToIndexSignatureDeclaration(indexInfo: IndexInfo, kind: IndexKind, enclosingDeclaration: Node): IndexSignatureDeclaration;
24792479
/** Note that the resulting nodes cannot be checked. */
2480-
createSignatureParts(signature: Signature, enclosingDeclaration: Node): SignatureParts;
2480+
signatureToSignatureDeclaration(signature: Signature, kind: SyntaxKind, enclosingDeclaration: Node): SignatureDeclaration;
24812481

24822482
getSymbolsInScope(location: Node, meaning: SymbolFlags): Symbol[];
24832483
getSymbolAtLocation(node: Node): Symbol;

src/compiler/utilities.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -744,8 +744,8 @@ namespace ts {
744744
//
745745
// let a: A.B.C;
746746
//
747-
// Calling isPartOfTypeNode would consider the qualified name A.B a type node. Only C or
748-
// A.B.C is a type node.
747+
// Calling isPartOfTypeNode would consider the qualified name A.B a type node.
748+
// Only C and A.B.C are type nodes.
749749
if (SyntaxKind.FirstTypeNode <= parent.kind && parent.kind <= SyntaxKind.LastTypeNode) {
750750
return true;
751751
}
@@ -3735,7 +3735,7 @@ namespace ts {
37353735
* of a TypeNode.
37363736
*/
37373737
export function isTypeNode(node: Node): node is TypeNode {
3738-
return isTypeNodeKind(node.kind);
3738+
return node && isTypeNodeKind(node.kind) && (!node.parent || isPartOfTypeNode(node));
37393739
}
37403740

37413741
// Binding patterns

src/services/codefixes/fixAddMissingMember.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ namespace ts.codefix {
3838

3939
const checker = context.program.getTypeChecker();
4040
const widenedType = checker.getWidenedType(checker.getBaseTypeOfLiteralType(checker.getTypeAtLocation(binaryExpression.right)));
41-
typeNode = checker.createTypeNode(widenedType, classDeclaration) || typeNode;
41+
typeNode = checker.typeToTypeNode(widenedType, classDeclaration) || typeNode;
4242
}
4343

4444
const openBrace = getOpenBraceOfClassLike(classDeclaration, sourceFile);

src/services/codefixes/fixClassIncorrectlyImplementsInterface.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ namespace ts.codefix {
5353
if (!indexInfoOfKind) {
5454
return;
5555
}
56-
const newIndexSignatureDeclaration = checker.createIndexSignatureFromIndexInfo(indexInfoOfKind, kind, classDeclaration);
56+
const newIndexSignatureDeclaration = checker.indexInfoToIndexSignatureDeclaration(indexInfoOfKind, kind, classDeclaration);
5757
newNodes.push(newIndexSignatureDeclaration);
5858
}
5959

src/services/codefixes/helpers.ts

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -64,15 +64,15 @@ namespace ts.codefix {
6464
const declaration = declarations[0] as Declaration;
6565
const name = declaration.name ? getSynthesizedDeepClone(declaration.name) as PropertyName : undefined;
6666
const visibilityModifier = createVisibilityModifier(getModifierFlags(declaration));
67-
const modifiers = visibilityModifier ? [visibilityModifier] : undefined;
67+
const modifiers = visibilityModifier ? createNodeArray([visibilityModifier]) : undefined;
6868
const type = checker.getWidenedType(checker.getTypeOfSymbolAtLocation(symbol, enclosingDeclaration));
6969

7070
switch (declaration.kind) {
7171
case SyntaxKind.GetAccessor:
7272
case SyntaxKind.SetAccessor:
7373
case SyntaxKind.PropertySignature:
7474
case SyntaxKind.PropertyDeclaration:
75-
const typeNode = checker.createTypeNode(type, enclosingDeclaration);
75+
const typeNode = checker.typeToTypeNode(type, enclosingDeclaration);
7676
const property = createProperty(
7777
/*decorators*/undefined,
7878
modifiers,
@@ -99,30 +99,32 @@ namespace ts.codefix {
9999
if (declarations.length === 1) {
100100
Debug.assert(signatures.length === 1);
101101
const signature = signatures[0];
102-
const signatureParts = checker.createSignatureParts(signature, enclosingDeclaration);
103-
return createStubbedMethod(modifiers, name, optional, signatureParts.typeParameters, signatureParts.parameters, signatureParts.type);
102+
const signatureDeclaration = checker.signatureToSignatureDeclaration(signature, SyntaxKind.MethodDeclaration, enclosingDeclaration) as MethodDeclaration;
103+
signatureDeclaration.modifiers = modifiers;
104+
signatureDeclaration.name = name;
105+
signatureDeclaration.questionToken = optional ? createToken(SyntaxKind.QuestionToken) : undefined;
106+
signatureDeclaration.body = createStubbedMethodBody();
107+
return signatureDeclaration;
104108
}
105109

106110
let signatureDeclarations = [];
107111
for (let i = 0; i < signatures.length; i++) {
108112
const signature = signatures[i];
109-
const signatureParts = checker.createSignatureParts(signature, enclosingDeclaration);
110-
signatureDeclarations.push(createMethod(
111-
/*decorators*/ undefined,
112-
modifiers,
113-
/*asteriskToken*/ undefined,
114-
name,
115-
optional ? createToken(SyntaxKind.QuestionToken) : undefined,
116-
signatureParts.typeParameters,
117-
signatureParts.parameters,
118-
signatureParts.type,
119-
/*body*/undefined));
113+
const signatureDeclaration = checker.signatureToSignatureDeclaration(signature, SyntaxKind.MethodDeclaration, enclosingDeclaration) as MethodDeclaration;
114+
signatureDeclaration.modifiers = modifiers;
115+
signatureDeclaration.name = name;
116+
signatureDeclaration.questionToken = optional ? createToken(SyntaxKind.QuestionToken) : undefined;
117+
signatureDeclarations.push(signatureDeclaration);
120118
}
121119

122120
if (declarations.length > signatures.length) {
123121
let signature = checker.getSignatureFromDeclaration(declarations[declarations.length - 1] as SignatureDeclaration);
124-
const signatureParts = checker.createSignatureParts(signature, enclosingDeclaration);
125-
signatureDeclarations.push(createStubbedMethod(modifiers, name, optional, signatureParts.typeParameters, signatureParts.parameters, signatureParts.type));
122+
const signatureDeclaration = checker.signatureToSignatureDeclaration(signature, SyntaxKind.MethodDeclaration, enclosingDeclaration) as MethodDeclaration;
123+
signatureDeclaration.modifiers = modifiers;
124+
signatureDeclaration.name = name;
125+
signatureDeclaration.questionToken = optional ? createToken(SyntaxKind.QuestionToken) : undefined;
126+
signatureDeclaration.body = createStubbedMethodBody();
127+
signatureDeclarations.push(signatureDeclaration);
126128
}
127129
else {
128130
Debug.assert(declarations.length === signatures.length);
@@ -195,9 +197,9 @@ namespace ts.codefix {
195197

196198
export function createStubbedMethod(modifiers: Modifier[], name: PropertyName, optional: boolean, typeParameters: TypeParameterDeclaration[] | undefined, parameters: ParameterDeclaration[], returnType: TypeNode | undefined) {
197199
return createMethod(
198-
/*decorators*/undefined,
200+
/*decorators*/ undefined,
199201
modifiers,
200-
/*asteriskToken*/undefined,
202+
/*asteriskToken*/ undefined,
201203
name,
202204
optional ? createToken(SyntaxKind.QuestionToken) : undefined,
203205
typeParameters,

0 commit comments

Comments
 (0)