From 2e8bbf0c9660330c42a2df41dd1fee7d403cfe52 Mon Sep 17 00:00:00 2001 From: Herrington Darkholme Date: Wed, 2 Nov 2016 20:27:53 +0800 Subject: [PATCH] fix #11480, disallow delete operator on readonly property or index signature --- src/compiler/checker.ts | 3 +++ src/compiler/diagnosticMessages.json | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 006b87cb542..7b4fd5803e3 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -13550,6 +13550,9 @@ namespace ts { function checkDeleteExpression(node: DeleteExpression): Type { checkExpression(node.expression); + checkReferenceExpression(node.expression, + Diagnostics.The_operand_of_a_delete_operator_must_be_a_property_reference, + Diagnostics.The_operand_of_a_delete_operator_cannot_be_a_read_only_property); return booleanType; } diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 5290782c156..187a3a60d16 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -1983,6 +1983,14 @@ "category": "Error", "code": 2697 }, + "The operand of a delete operator must be a property reference": { + "category": "Error", + "code": 2698 + }, + "The operand of a delete operator cannot be a read-only property": { + "category": "Error", + "code": 2699 + }, "Import declaration '{0}' is using private name '{1}'.": { "category": "Error",