mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-05-15 12:51:30 -05:00
Unescape only string literal type nodes.
Not all string literal types, regardless of source, as in the last commit.
This commit is contained in:
@@ -5138,20 +5138,19 @@ namespace ts {
|
||||
}
|
||||
|
||||
function getStringLiteralTypeForText(text: string): StringLiteralType {
|
||||
const unescaped = unescapeIdentifier(text);
|
||||
if (hasProperty(stringLiteralTypes, unescaped)) {
|
||||
return stringLiteralTypes[unescaped];
|
||||
if (hasProperty(stringLiteralTypes, text)) {
|
||||
return stringLiteralTypes[text];
|
||||
}
|
||||
|
||||
const type = stringLiteralTypes[unescaped] = <StringLiteralType>createType(TypeFlags.StringLiteral);
|
||||
type.text = unescaped;
|
||||
const type = stringLiteralTypes[text] = <StringLiteralType>createType(TypeFlags.StringLiteral);
|
||||
type.text = text;
|
||||
return type;
|
||||
}
|
||||
|
||||
function getTypeFromStringLiteralTypeNode(node: StringLiteralTypeNode): Type {
|
||||
const links = getNodeLinks(node);
|
||||
if (!links.resolvedType) {
|
||||
links.resolvedType = getStringLiteralTypeForText(node.text);
|
||||
links.resolvedType = getStringLiteralTypeForText(unescapeIdentifier(node.text));
|
||||
}
|
||||
return links.resolvedType;
|
||||
}
|
||||
|
||||
@@ -6,4 +6,6 @@ tests/cases/compiler/doubleUnderStringLiteralAssignability.ts(2,5): error TS2322
|
||||
var bad: '__dunder' = 'no_dunder';
|
||||
~~~
|
||||
!!! error TS2322: Type '"no_dunder"' is not assignable to type '"__dunder"'.
|
||||
var okok: '___thunder' = '___thunder';
|
||||
var alsoOk: '_sunder' = '_sunder';
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
//// [doubleUnderStringLiteralAssignability.ts]
|
||||
var shouldBeOk: '__dunder' = '__dunder';
|
||||
var bad: '__dunder' = 'no_dunder';
|
||||
var okok: '___thunder' = '___thunder';
|
||||
var alsoOk: '_sunder' = '_sunder';
|
||||
|
||||
|
||||
//// [doubleUnderStringLiteralAssignability.js]
|
||||
var shouldBeOk = '__dunder';
|
||||
var bad = 'no_dunder';
|
||||
var okok = '___thunder';
|
||||
var alsoOk = '_sunder';
|
||||
|
||||
@@ -1,2 +1,4 @@
|
||||
var shouldBeOk: '__dunder' = '__dunder';
|
||||
var bad: '__dunder' = 'no_dunder';
|
||||
var okok: '___thunder' = '___thunder';
|
||||
var alsoOk: '_sunder' = '_sunder';
|
||||
|
||||
Reference in New Issue
Block a user