mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-09 20:51:43 -06:00
Add grammar error on quoted constructors for TS 3.5
This commit is contained in:
parent
72f30a8308
commit
c5e6913ede
@ -31468,6 +31468,9 @@ namespace ts {
|
||||
return grammarErrorAtPos(node, node.end - 1, ";".length, Diagnostics._0_expected, "{");
|
||||
}
|
||||
}
|
||||
else if (isClassLike(node.parent) && isStringLiteral(node.name) && node.name.text === "constructor" && (!compilerOptions.target || compilerOptions.target < ScriptTarget.ES5)) {
|
||||
return grammarErrorOnNode(node.name, Diagnostics.Quoted_constructors_have_previously_been_interpreted_as_methods_which_is_incorrect_In_TypeScript_3_6_they_will_be_correctly_parsed_as_constructors_In_the_meantime_consider_using_constructor_to_write_a_constructor_or_constructor_to_write_a_method);
|
||||
}
|
||||
if (checkGrammarForGenerator(node)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -2959,7 +2959,7 @@
|
||||
"category": "Error",
|
||||
"code": 4104
|
||||
},
|
||||
|
||||
|
||||
"The current host does not support the '{0}' option.": {
|
||||
"category": "Error",
|
||||
"code": 5001
|
||||
@ -4954,5 +4954,9 @@
|
||||
"No value exists in scope for the shorthand property '{0}'. Either declare one or provide an initializer." :{
|
||||
"category": "Error",
|
||||
"code": 18004
|
||||
},
|
||||
"Quoted constructors have previously been interpreted as methods, which is incorrect. In TypeScript 3.6, they will be correctly parsed as constructors. In the meantime, consider using 'constructor()' to write a constructor, or '[\"constructor\"]()' to write a method.": {
|
||||
"category": "Error",
|
||||
"code": 96000
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,23 +1,17 @@
|
||||
class C {
|
||||
x: number;
|
||||
"constructor"() {
|
||||
this.x = 0;
|
||||
}
|
||||
"constructor"() {} // Error in 3.5
|
||||
}
|
||||
(new C).constructor(); // Error
|
||||
|
||||
class D {
|
||||
x: number;
|
||||
'constructor'() {
|
||||
this.x = 0;
|
||||
}
|
||||
'constructor'() {} // Error in 3.5
|
||||
}
|
||||
(new C).constructor(); // Error
|
||||
|
||||
class E {
|
||||
x: number;
|
||||
['constructor']() {
|
||||
this.x = 0;
|
||||
}
|
||||
['constructor']() {}
|
||||
}
|
||||
(new E).constructor();
|
||||
|
||||
new class {
|
||||
"constructor"() {} // Error in 3.5
|
||||
};
|
||||
|
||||
var o = { "constructor"() {} };
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user