@@ -3458,14 +3458,21 @@ var ts;
34583458 node.initializer = parseInitializer(true);
34593459 return finishNode(node);
34603460 }
3461- function parseSignature(kind, returnToken) {
3461+ function parseSignature(kind, returnToken, returnTokenRequired ) {
34623462 if (kind === 121 /* ConstructSignature */) {
34633463 parseExpected(78 /* NewKeyword */);
34643464 }
34653465 var typeParameters = parseTypeParameters();
34663466 var parameters = parseParameterList(7 /* OpenParenToken */, 8 /* CloseParenToken */);
34673467 checkParameterList(parameters);
3468- var type = parseOptional(returnToken) ? parseType() : undefined;
3468+ var type;
3469+ if (returnTokenRequired) {
3470+ parseExpected(returnToken);
3471+ type = parseType();
3472+ }
3473+ else if (parseOptional(returnToken)) {
3474+ type = parseType();
3475+ }
34693476 return {
34703477 typeParameters: typeParameters,
34713478 parameters: parameters,
@@ -3515,7 +3522,7 @@ var ts;
35153522 }
35163523 function parseSignatureMember(kind, returnToken) {
35173524 var node = createNode(kind);
3518- var sig = parseSignature(kind, returnToken);
3525+ var sig = parseSignature(kind, returnToken, false );
35193526 node.typeParameters = sig.typeParameters;
35203527 node.parameters = sig.parameters;
35213528 node.type = sig.type;
@@ -3584,7 +3591,7 @@ var ts;
35843591 }
35853592 if (token === 7 /* OpenParenToken */ || token === 15 /* LessThanToken */) {
35863593 node.kind = 116 /* Method */;
3587- var sig = parseSignature(120 /* CallSignature */, 42 /* ColonToken */);
3594+ var sig = parseSignature(120 /* CallSignature */, 42 /* ColonToken */, false );
35883595 node.typeParameters = sig.typeParameters;
35893596 node.parameters = sig.parameters;
35903597 node.type = sig.type;
@@ -3640,7 +3647,7 @@ var ts;
36403647 function parseFunctionType(signatureKind) {
36413648 var node = createNode(125 /* TypeLiteral */);
36423649 var member = createNode(signatureKind);
3643- var sig = parseSignature(signatureKind, 23 /* EqualsGreaterThanToken */);
3650+ var sig = parseSignature(signatureKind, 23 /* EqualsGreaterThanToken */, true );
36443651 member.typeParameters = sig.typeParameters;
36453652 member.parameters = sig.parameters;
36463653 member.type = sig.type;
@@ -3828,7 +3835,7 @@ var ts;
38283835 }
38293836 var pos = getNodePos();
38303837 if (triState === 1 /* True */) {
3831- var sig = parseSignature(120 /* CallSignature */, 42 /* ColonToken */);
3838+ var sig = parseSignature(120 /* CallSignature */, 42 /* ColonToken */, false );
38323839 if (parseExpected(23 /* EqualsGreaterThanToken */) || token === 5 /* OpenBraceToken */) {
38333840 return parseArrowExpressionTail(pos, sig, false);
38343841 }
@@ -3889,7 +3896,7 @@ var ts;
38893896 }
38903897 function tryParseSignatureIfArrowOrBraceFollows() {
38913898 return tryParse(function () {
3892- var sig = parseSignature(120 /* CallSignature */, 42 /* ColonToken */);
3899+ var sig = parseSignature(120 /* CallSignature */, 42 /* ColonToken */, false );
38933900 if (token === 23 /* EqualsGreaterThanToken */ || token === 5 /* OpenBraceToken */) {
38943901 return sig;
38953902 }
@@ -4161,7 +4168,7 @@ var ts;
41614168 var node = createNode(129 /* PropertyAssignment */);
41624169 node.name = parsePropertyName();
41634170 if (token === 7 /* OpenParenToken */ || token === 15 /* LessThanToken */) {
4164- var sig = parseSignature(120 /* CallSignature */, 42 /* ColonToken */);
4171+ var sig = parseSignature(120 /* CallSignature */, 42 /* ColonToken */, false );
41654172 var body = parseBody(false);
41664173 node.initializer = makeFunctionExpression(136 /* FunctionExpression */, node.pos, undefined, sig, body);
41674174 }
@@ -4240,7 +4247,7 @@ var ts;
42404247 var pos = getNodePos();
42414248 parseExpected(73 /* FunctionKeyword */);
42424249 var name = isIdentifier() ? parseIdentifier() : undefined;
4243- var sig = parseSignature(120 /* CallSignature */, 42 /* ColonToken */);
4250+ var sig = parseSignature(120 /* CallSignature */, 42 /* ColonToken */, false );
42444251 var body = parseBody(false);
42454252 if (name && isInStrictMode && isEvalOrArgumentsIdentifier(name)) {
42464253 reportInvalidUseInStrictMode(name);
@@ -4752,7 +4759,7 @@ var ts;
47524759 node.flags = flags;
47534760 parseExpected(73 /* FunctionKeyword */);
47544761 node.name = parseIdentifier();
4755- var sig = parseSignature(120 /* CallSignature */, 42 /* ColonToken */);
4762+ var sig = parseSignature(120 /* CallSignature */, 42 /* ColonToken */, false );
47564763 node.typeParameters = sig.typeParameters;
47574764 node.parameters = sig.parameters;
47584765 node.type = sig.type;
@@ -4766,7 +4773,7 @@ var ts;
47664773 var node = createNode(117 /* Constructor */, pos);
47674774 node.flags = flags;
47684775 parseExpected(103 /* ConstructorKeyword */);
4769- var sig = parseSignature(120 /* CallSignature */, 42 /* ColonToken */);
4776+ var sig = parseSignature(120 /* CallSignature */, 42 /* ColonToken */, false );
47704777 node.typeParameters = sig.typeParameters;
47714778 node.parameters = sig.parameters;
47724779 node.type = sig.type;
@@ -4790,7 +4797,7 @@ var ts;
47904797 var method = createNode(116 /* Method */, pos);
47914798 method.flags = flags;
47924799 method.name = name;
4793- var sig = parseSignature(120 /* CallSignature */, 42 /* ColonToken */);
4800+ var sig = parseSignature(120 /* CallSignature */, 42 /* ColonToken */, false );
47944801 method.typeParameters = sig.typeParameters;
47954802 method.parameters = sig.parameters;
47964803 method.type = sig.type;
@@ -4858,7 +4865,7 @@ var ts;
48584865 var node = createNode(kind, pos);
48594866 node.flags = flags;
48604867 node.name = parsePropertyName();
4861- var sig = parseSignature(120 /* CallSignature */, 42 /* ColonToken */);
4868+ var sig = parseSignature(120 /* CallSignature */, 42 /* ColonToken */, false );
48624869 node.typeParameters = sig.typeParameters;
48634870 node.parameters = sig.parameters;
48644871 node.type = sig.type;
@@ -5421,17 +5428,27 @@ var ts;
54215428 var start = refPos;
54225429 var length = refEnd - refPos;
54235430 }
5431+ var diagnostic;
54245432 if (hasExtension(filename)) {
54255433 if (!ts.fileExtensionIs(filename, ".ts")) {
5426- errors.push(ts.createFileDiagnostic(refFile, start, length, ts.Diagnostics.File_0_must_have_extension_ts_or_d_ts, filename)) ;
5434+ diagnostic = ts.Diagnostics.File_0_must_have_extension_ts_or_d_ts;
54275435 }
54285436 else if (!findSourceFile(filename, isDefaultLib, refFile, refPos, refEnd)) {
5429- errors.push(ts.createFileDiagnostic(refFile, start, length, ts.Diagnostics.File_0_not_found, filename)) ;
5437+ diagnostic = ts.Diagnostics.File_0_not_found;
54305438 }
54315439 }
54325440 else {
54335441 if (!(findSourceFile(filename + ".ts", isDefaultLib, refFile, refPos, refEnd) || findSourceFile(filename + ".d.ts", isDefaultLib, refFile, refPos, refEnd))) {
5434- errors.push(ts.createFileDiagnostic(refFile, start, length, ts.Diagnostics.File_0_not_found, filename + ".ts"));
5442+ diagnostic = ts.Diagnostics.File_0_not_found;
5443+ filename += ".ts";
5444+ }
5445+ }
5446+ if (diagnostic) {
5447+ if (refFile) {
5448+ errors.push(ts.createFileDiagnostic(refFile, start, length, diagnostic, filename));
5449+ }
5450+ else {
5451+ errors.push(ts.createCompilerDiagnostic(diagnostic, filename));
54355452 }
54365453 }
54375454 }
@@ -10897,10 +10914,12 @@ var ts;
1089710914 continue;
1089810915 }
1089910916 if (getDeclarationFlagsFromSymbol(sourceProp) & 32 /* Private */ || getDeclarationFlagsFromSymbol(targetProp) & 32 /* Private */) {
10900- if (reportErrors) {
10901- reportError(ts.Diagnostics.Private_property_0_cannot_be_reimplemented, symbolToString(targetProp));
10917+ if (sourceProp.valueDeclaration !== targetProp.valueDeclaration) {
10918+ if (reportErrors) {
10919+ reportError(ts.Diagnostics.Private_property_0_cannot_be_reimplemented, symbolToString(targetProp));
10920+ }
10921+ return false;
1090210922 }
10903- return false;
1090410923 }
1090510924 if (!isRelatedTo(getTypeOfSymbol(sourceProp), getTypeOfSymbol(targetProp), reportErrors)) {
1090610925 if (reportErrors) {
0 commit comments