From 41f37f58904b0febba49daf766b591ca0d127eba Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Mon, 31 Aug 2015 01:07:30 -0700 Subject: [PATCH] Improve error message spans when object literals have excess properties. --- src/compiler/checker.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index e624eb41d86..cb53531f6b3 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -4593,6 +4593,16 @@ namespace ts { } return result !== Ternary.False; + function reportErrorAndTryImproveErrorNode( + newErrorNode: Node, + message: DiagnosticMessage, + arg0?: string, + arg1?: string, + arg2?: string) { + errorNode = newErrorNode || errorNode; + reportError(message, arg0, arg1, arg2); + } + function reportError(message: DiagnosticMessage, arg0?: string, arg1?: string, arg2?: string): void { errorInfo = chainDiagnosticMessages(errorInfo, message, arg0, arg1, arg2); } @@ -4767,7 +4777,8 @@ namespace ts { for (let prop of getPropertiesOfObjectType(source)) { if (!isKnownProperty(target, prop.name)) { if (reportErrors) { - reportError(Diagnostics.Object_literal_may_only_specify_known_properties_and_0_does_not_exist_in_type_1, symbolToString(prop), typeToString(target)); + reportErrorAndTryImproveErrorNode(prop.valueDeclaration, + Diagnostics.Object_literal_may_only_specify_known_properties_and_0_does_not_exist_in_type_1, symbolToString(prop), typeToString(target)); } return true; }