enum cleanup: apply constant folding to all enum initializers, inline accesses only for const enums

This commit is contained in:
Vladimir Matveev
2015-03-04 08:17:18 -08:00
parent fedc809c3b
commit 8d089afb34
125 changed files with 935 additions and 944 deletions
+32 -20
View File
@@ -9560,7 +9560,7 @@ module ts {
}
var initializer = member.initializer;
if (initializer) {
autoValue = getConstantValueForEnumMemberInitializer(initializer, enumIsConst);
autoValue = getConstantValueForEnumMemberInitializer(initializer);
if (autoValue === undefined) {
if (enumIsConst) {
error(initializer, Diagnostics.In_const_enum_declarations_member_initializer_must_be_constant_expression);
@@ -9570,7 +9570,7 @@ module ts {
// If it is a constant value (not undefined), it is syntactically constrained to be a number.
// Also, we do not need to check this for ambients because there is already
// a syntax error if it is not a constant.
checkTypeAssignableTo(checkExpression(initializer), enumType, initializer, /*headMessage*/ undefined);
checkTypeAssignableTo(checkExpression(initializer), enumType, initializer, /*headMessage*/ undefined);
}
}
else if (enumIsConst) {
@@ -9595,7 +9595,7 @@ module ts {
nodeLinks.flags |= NodeCheckFlags.EnumValuesComputed;
}
function getConstantValueForEnumMemberInitializer(initializer: Expression, enumIsConst: boolean): number {
function getConstantValueForEnumMemberInitializer(initializer: Expression): number {
return evalConstant(initializer);
function evalConstant(e: Node): number {
@@ -9608,14 +9608,10 @@ module ts {
switch ((<PrefixUnaryExpression>e).operator) {
case SyntaxKind.PlusToken: return value;
case SyntaxKind.MinusToken: return -value;
case SyntaxKind.TildeToken: return enumIsConst ? ~value : undefined;
case SyntaxKind.TildeToken: return ~value;
}
return undefined;
case SyntaxKind.BinaryExpression:
if (!enumIsConst) {
return undefined;
}
var left = evalConstant((<BinaryExpression>e).left);
if (left === undefined) {
return undefined;
@@ -9641,14 +9637,10 @@ module ts {
case SyntaxKind.NumericLiteral:
return +(<LiteralExpression>e).text;
case SyntaxKind.ParenthesizedExpression:
return enumIsConst ? evalConstant((<ParenthesizedExpression>e).expression) : undefined;
return evalConstant((<ParenthesizedExpression>e).expression);
case SyntaxKind.Identifier:
case SyntaxKind.ElementAccessExpression:
case SyntaxKind.PropertyAccessExpression:
if (!enumIsConst) {
return undefined;
}
var member = initializer.parent;
var currentType = getTypeOfSymbol(getSymbolOfNode(member.parent));
var enumType: Type;
@@ -9661,19 +9653,37 @@ module ts {
propertyName = (<Identifier>e).text;
}
else {
var expression: Expression;
if (e.kind === SyntaxKind.ElementAccessExpression) {
if ((<ElementAccessExpression>e).argumentExpression === undefined ||
(<ElementAccessExpression>e).argumentExpression.kind !== SyntaxKind.StringLiteral) {
return undefined;
}
var enumType = getTypeOfNode((<ElementAccessExpression>e).expression);
expression = (<ElementAccessExpression>e).expression;
propertyName = (<LiteralExpression>(<ElementAccessExpression>e).argumentExpression).text;
}
else {
var enumType = getTypeOfNode((<PropertyAccessExpression>e).expression);
expression = (<PropertyAccessExpression>e).expression;
propertyName = (<PropertyAccessExpression>e).name.text;
}
if (enumType !== currentType) {
// expression part in ElementAccess\PropertyAccess should be either identifier or dottedName
var current = expression;
while (current) {
if (current.kind === SyntaxKind.Identifier) {
break;
}
else if (current.kind === SyntaxKind.PropertyAccessExpression) {
current = (<ElementAccessExpression>current).expression;
}
else {
return undefined;
}
}
var enumType = checkExpression(expression);
// allow references to constant members of other enums
if (!(enumType.symbol && (enumType.symbol.flags & SymbolFlags.Enum))) {
return undefined;
}
}
@@ -9681,10 +9691,12 @@ module ts {
if (propertyName === undefined) {
return undefined;
}
var property = getPropertyOfObjectType(enumType, propertyName);
if (!property || !(property.flags & SymbolFlags.EnumMember)) {
return undefined;
}
var propertyDecl = property.valueDeclaration;
// self references are illegal
if (member === propertyDecl) {
@@ -9695,6 +9707,7 @@ module ts {
if (!isDefinedBefore(propertyDecl, member)) {
return undefined;
}
return <number>getNodeLinks(propertyDecl).enumMemberValue;
}
}
@@ -10866,10 +10879,9 @@ module ts {
var symbol = getNodeLinks(node).resolvedSymbol;
if (symbol && (symbol.flags & SymbolFlags.EnumMember)) {
var declaration = symbol.valueDeclaration;
var constantValue: number;
if (declaration.kind === SyntaxKind.EnumMember) {
return getEnumMemberValue(<EnumMember>declaration);
// inline property\index accesses only for const enums
if (isConstEnumDeclaration(symbol.valueDeclaration.parent)) {
return getEnumMemberValue(<EnumMember>symbol.valueDeclaration);
}
}
+5 -8
View File
@@ -4612,15 +4612,12 @@ module ts {
}
function writeEnumMemberDeclarationValue(member: EnumMember) {
if (!member.initializer || isConst(member.parent)) {
var value = resolver.getConstantValue(member);
if (value !== undefined) {
write(value.toString());
return;
}
var value = resolver.getConstantValue(member);
if (value !== undefined) {
write(value.toString());
return;
}
if (member.initializer) {
else if (member.initializer) {
emit(member.initializer);
}
else {
@@ -34,6 +34,6 @@ var enumdule;
enumdule.Point = Point;
})(enumdule || (enumdule = {}));
var x;
var x = 0 /* Red */;
var x = enumdule.Red;
var y;
var y = new enumdule.Point(0, 0);
@@ -34,6 +34,6 @@ var enumdule;
enumdule[enumdule["Blue"] = 1] = "Blue";
})(enumdule || (enumdule = {}));
var x;
var x = 0 /* Red */;
var x = enumdule.Red;
var y;
var y = new enumdule.Point(0, 0);
@@ -26,6 +26,6 @@ var A;
})(Day || (Day = {}));
})(A || (A = {}));
// not an error since exported
var a = 0 /* Red */;
var a = A.Color.Red;
// error not exported
var b = A.Day.Monday;
@@ -79,7 +79,7 @@ var r11 = a + foo();
var r12 = a + C;
var r13 = a + new C();
var r14 = a + E;
var r15 = a + 0 /* a */;
var r15 = a + E.a;
var r16 = a + M;
var r17 = a + '';
var r18 = a + 123;
@@ -83,6 +83,6 @@ var r14 = b + d;
var r15 = b + foo;
var r16 = b + foo();
var r17 = b + C;
var r18 = 0 /* a */ + new C();
var r19 = 0 /* a */ + C.foo();
var r20 = 0 /* a */ + M;
var r18 = E.a + new C();
var r19 = E.a + C.foo();
var r20 = E.a + M;
@@ -49,13 +49,13 @@ var r2 = a + null;
var r3 = null + b;
var r4 = null + 1;
var r5 = null + c;
var r6 = null + 0 /* a */;
var r7 = null + 0 /* 'a' */;
var r6 = null + E.a;
var r7 = null + E['a'];
var r8 = b + null;
var r9 = 1 + null;
var r10 = c + null;
var r11 = 0 /* a */ + null;
var r12 = 0 /* 'a' */ + null;
var r11 = E.a + null;
var r12 = E['a'] + null;
// null + string
var r13 = null + d;
var r14 = null + '';
@@ -43,10 +43,10 @@ var r2 = a + b;
var r3 = b + a;
var r4 = b + b;
var r5 = 0 + a;
var r6 = 0 /* a */ + 0;
var r7 = 0 /* a */ + 1 /* b */;
var r8 = 0 /* 'a' */ + 1 /* 'b' */;
var r9 = 0 /* 'a' */ + 0 /* 'c' */;
var r6 = E.a + 0;
var r7 = E.a + E.b;
var r8 = E['a'] + E['b'];
var r9 = E['a'] + F['c'];
var r10 = a + c;
var r11 = c + a;
var r12 = b + c;
@@ -72,7 +72,7 @@ var r13 = f + x;
var r14 = g + x;
// other cases
var r15 = x + E;
var r16 = x + 0 /* a */;
var r16 = x + E.a;
var r17 = x + '';
var r18 = x + 0;
var r19 = x + { a: '' };
@@ -49,13 +49,13 @@ var r2 = a + undefined;
var r3 = undefined + b;
var r4 = undefined + 1;
var r5 = undefined + c;
var r6 = undefined + 0 /* a */;
var r7 = undefined + 0 /* 'a' */;
var r6 = undefined + E.a;
var r7 = undefined + E['a'];
var r8 = b + undefined;
var r9 = 1 + undefined;
var r10 = c + undefined;
var r11 = 0 /* a */ + undefined;
var r12 = 0 /* 'a' */ + undefined;
var r11 = E.a + undefined;
var r12 = E['a'] + undefined;
// undefined + string
var r13 = undefined + d;
var r14 = undefined + '';
@@ -23,6 +23,6 @@ define(["require", "exports"], function (require, exports) {
});
//// [foo_1.js]
define(["require", "exports", "./foo_0"], function (require, exports, foo) {
if (0 /* A */ === 0) {
if (foo.E1.A === 0) {
}
});
@@ -166,127 +166,127 @@ var ra2 = c * b;
var ra3 = c * c;
var ra4 = a * c;
var ra5 = b * c;
var ra6 = 0 /* a */ * a;
var ra7 = 0 /* a */ * b;
var ra8 = 0 /* a */ * 1 /* b */;
var ra9 = 0 /* a */ * 1;
var ra10 = a * 1 /* b */;
var ra11 = b * 1 /* b */;
var ra12 = 1 * 1 /* b */;
var ra6 = E.a * a;
var ra7 = E.a * b;
var ra8 = E.a * E.b;
var ra9 = E.a * 1;
var ra10 = a * E.b;
var ra11 = b * E.b;
var ra12 = 1 * E.b;
// operator /
var rb1 = c / a;
var rb2 = c / b;
var rb3 = c / c;
var rb4 = a / c;
var rb5 = b / c;
var rb6 = 0 /* a */ / a;
var rb7 = 0 /* a */ / b;
var rb8 = 0 /* a */ / 1 /* b */;
var rb9 = 0 /* a */ / 1;
var rb10 = a / 1 /* b */;
var rb11 = b / 1 /* b */;
var rb12 = 1 / 1 /* b */;
var rb6 = E.a / a;
var rb7 = E.a / b;
var rb8 = E.a / E.b;
var rb9 = E.a / 1;
var rb10 = a / E.b;
var rb11 = b / E.b;
var rb12 = 1 / E.b;
// operator %
var rc1 = c % a;
var rc2 = c % b;
var rc3 = c % c;
var rc4 = a % c;
var rc5 = b % c;
var rc6 = 0 /* a */ % a;
var rc7 = 0 /* a */ % b;
var rc8 = 0 /* a */ % 1 /* b */;
var rc9 = 0 /* a */ % 1;
var rc10 = a % 1 /* b */;
var rc11 = b % 1 /* b */;
var rc12 = 1 % 1 /* b */;
var rc6 = E.a % a;
var rc7 = E.a % b;
var rc8 = E.a % E.b;
var rc9 = E.a % 1;
var rc10 = a % E.b;
var rc11 = b % E.b;
var rc12 = 1 % E.b;
// operator -
var rd1 = c - a;
var rd2 = c - b;
var rd3 = c - c;
var rd4 = a - c;
var rd5 = b - c;
var rd6 = 0 /* a */ - a;
var rd7 = 0 /* a */ - b;
var rd8 = 0 /* a */ - 1 /* b */;
var rd9 = 0 /* a */ - 1;
var rd10 = a - 1 /* b */;
var rd11 = b - 1 /* b */;
var rd12 = 1 - 1 /* b */;
var rd6 = E.a - a;
var rd7 = E.a - b;
var rd8 = E.a - E.b;
var rd9 = E.a - 1;
var rd10 = a - E.b;
var rd11 = b - E.b;
var rd12 = 1 - E.b;
// operator <<
var re1 = c << a;
var re2 = c << b;
var re3 = c << c;
var re4 = a << c;
var re5 = b << c;
var re6 = 0 /* a */ << a;
var re7 = 0 /* a */ << b;
var re8 = 0 /* a */ << 1 /* b */;
var re9 = 0 /* a */ << 1;
var re10 = a << 1 /* b */;
var re11 = b << 1 /* b */;
var re12 = 1 << 1 /* b */;
var re6 = E.a << a;
var re7 = E.a << b;
var re8 = E.a << E.b;
var re9 = E.a << 1;
var re10 = a << E.b;
var re11 = b << E.b;
var re12 = 1 << E.b;
// operator >>
var rf1 = c >> a;
var rf2 = c >> b;
var rf3 = c >> c;
var rf4 = a >> c;
var rf5 = b >> c;
var rf6 = 0 /* a */ >> a;
var rf7 = 0 /* a */ >> b;
var rf8 = 0 /* a */ >> 1 /* b */;
var rf9 = 0 /* a */ >> 1;
var rf10 = a >> 1 /* b */;
var rf11 = b >> 1 /* b */;
var rf12 = 1 >> 1 /* b */;
var rf6 = E.a >> a;
var rf7 = E.a >> b;
var rf8 = E.a >> E.b;
var rf9 = E.a >> 1;
var rf10 = a >> E.b;
var rf11 = b >> E.b;
var rf12 = 1 >> E.b;
// operator >>>
var rg1 = c >>> a;
var rg2 = c >>> b;
var rg3 = c >>> c;
var rg4 = a >>> c;
var rg5 = b >>> c;
var rg6 = 0 /* a */ >>> a;
var rg7 = 0 /* a */ >>> b;
var rg8 = 0 /* a */ >>> 1 /* b */;
var rg9 = 0 /* a */ >>> 1;
var rg10 = a >>> 1 /* b */;
var rg11 = b >>> 1 /* b */;
var rg12 = 1 >>> 1 /* b */;
var rg6 = E.a >>> a;
var rg7 = E.a >>> b;
var rg8 = E.a >>> E.b;
var rg9 = E.a >>> 1;
var rg10 = a >>> E.b;
var rg11 = b >>> E.b;
var rg12 = 1 >>> E.b;
// operator &
var rh1 = c & a;
var rh2 = c & b;
var rh3 = c & c;
var rh4 = a & c;
var rh5 = b & c;
var rh6 = 0 /* a */ & a;
var rh7 = 0 /* a */ & b;
var rh8 = 0 /* a */ & 1 /* b */;
var rh9 = 0 /* a */ & 1;
var rh10 = a & 1 /* b */;
var rh11 = b & 1 /* b */;
var rh12 = 1 & 1 /* b */;
var rh6 = E.a & a;
var rh7 = E.a & b;
var rh8 = E.a & E.b;
var rh9 = E.a & 1;
var rh10 = a & E.b;
var rh11 = b & E.b;
var rh12 = 1 & E.b;
// operator ^
var ri1 = c ^ a;
var ri2 = c ^ b;
var ri3 = c ^ c;
var ri4 = a ^ c;
var ri5 = b ^ c;
var ri6 = 0 /* a */ ^ a;
var ri7 = 0 /* a */ ^ b;
var ri8 = 0 /* a */ ^ 1 /* b */;
var ri9 = 0 /* a */ ^ 1;
var ri10 = a ^ 1 /* b */;
var ri11 = b ^ 1 /* b */;
var ri12 = 1 ^ 1 /* b */;
var ri6 = E.a ^ a;
var ri7 = E.a ^ b;
var ri8 = E.a ^ E.b;
var ri9 = E.a ^ 1;
var ri10 = a ^ E.b;
var ri11 = b ^ E.b;
var ri12 = 1 ^ E.b;
// operator |
var rj1 = c | a;
var rj2 = c | b;
var rj3 = c | c;
var rj4 = a | c;
var rj5 = b | c;
var rj6 = 0 /* a */ | a;
var rj7 = 0 /* a */ | b;
var rj8 = 0 /* a */ | 1 /* b */;
var rj9 = 0 /* a */ | 1;
var rj10 = a | 1 /* b */;
var rj11 = b | 1 /* b */;
var rj12 = 1 | 1 /* b */;
var rj6 = E.a | a;
var rj7 = E.a | b;
var rj8 = E.a | E.b;
var rj9 = E.a | 1;
var rj10 = a | E.b;
var rj11 = b | E.b;
var rj12 = 1 | E.b;
@@ -175,127 +175,127 @@ var ra2 = c * b;
var ra3 = c * c;
var ra4 = a * c;
var ra5 = b * c;
var ra6 = 0 /* a */ * a;
var ra7 = 0 /* a */ * b;
var ra8 = 0 /* a */ * 1 /* b */;
var ra9 = 0 /* a */ * 1;
var ra10 = a * 1 /* b */;
var ra11 = b * 1 /* b */;
var ra12 = 1 * 1 /* b */;
var ra6 = E.a * a;
var ra7 = E.a * b;
var ra8 = E.a * E.b;
var ra9 = E.a * 1;
var ra10 = a * E.b;
var ra11 = b * E.b;
var ra12 = 1 * E.b;
// operator /
var rb1 = c / a;
var rb2 = c / b;
var rb3 = c / c;
var rb4 = a / c;
var rb5 = b / c;
var rb6 = 0 /* a */ / a;
var rb7 = 0 /* a */ / b;
var rb8 = 0 /* a */ / 1 /* b */;
var rb9 = 0 /* a */ / 1;
var rb10 = a / 1 /* b */;
var rb11 = b / 1 /* b */;
var rb12 = 1 / 1 /* b */;
var rb6 = E.a / a;
var rb7 = E.a / b;
var rb8 = E.a / E.b;
var rb9 = E.a / 1;
var rb10 = a / E.b;
var rb11 = b / E.b;
var rb12 = 1 / E.b;
// operator %
var rc1 = c % a;
var rc2 = c % b;
var rc3 = c % c;
var rc4 = a % c;
var rc5 = b % c;
var rc6 = 0 /* a */ % a;
var rc7 = 0 /* a */ % b;
var rc8 = 0 /* a */ % 1 /* b */;
var rc9 = 0 /* a */ % 1;
var rc10 = a % 1 /* b */;
var rc11 = b % 1 /* b */;
var rc12 = 1 % 1 /* b */;
var rc6 = E.a % a;
var rc7 = E.a % b;
var rc8 = E.a % E.b;
var rc9 = E.a % 1;
var rc10 = a % E.b;
var rc11 = b % E.b;
var rc12 = 1 % E.b;
// operator -
var rd1 = c - a;
var rd2 = c - b;
var rd3 = c - c;
var rd4 = a - c;
var rd5 = b - c;
var rd6 = 0 /* a */ - a;
var rd7 = 0 /* a */ - b;
var rd8 = 0 /* a */ - 1 /* b */;
var rd9 = 0 /* a */ - 1;
var rd10 = a - 1 /* b */;
var rd11 = b - 1 /* b */;
var rd12 = 1 - 1 /* b */;
var rd6 = E.a - a;
var rd7 = E.a - b;
var rd8 = E.a - E.b;
var rd9 = E.a - 1;
var rd10 = a - E.b;
var rd11 = b - E.b;
var rd12 = 1 - E.b;
// operator <<
var re1 = c << a;
var re2 = c << b;
var re3 = c << c;
var re4 = a << c;
var re5 = b << c;
var re6 = 0 /* a */ << a;
var re7 = 0 /* a */ << b;
var re8 = 0 /* a */ << 1 /* b */;
var re9 = 0 /* a */ << 1;
var re10 = a << 1 /* b */;
var re11 = b << 1 /* b */;
var re12 = 1 << 1 /* b */;
var re6 = E.a << a;
var re7 = E.a << b;
var re8 = E.a << E.b;
var re9 = E.a << 1;
var re10 = a << E.b;
var re11 = b << E.b;
var re12 = 1 << E.b;
// operator >>
var rf1 = c >> a;
var rf2 = c >> b;
var rf3 = c >> c;
var rf4 = a >> c;
var rf5 = b >> c;
var rf6 = 0 /* a */ >> a;
var rf7 = 0 /* a */ >> b;
var rf8 = 0 /* a */ >> 1 /* b */;
var rf9 = 0 /* a */ >> 1;
var rf10 = a >> 1 /* b */;
var rf11 = b >> 1 /* b */;
var rf12 = 1 >> 1 /* b */;
var rf6 = E.a >> a;
var rf7 = E.a >> b;
var rf8 = E.a >> E.b;
var rf9 = E.a >> 1;
var rf10 = a >> E.b;
var rf11 = b >> E.b;
var rf12 = 1 >> E.b;
// operator >>>
var rg1 = c >>> a;
var rg2 = c >>> b;
var rg3 = c >>> c;
var rg4 = a >>> c;
var rg5 = b >>> c;
var rg6 = 0 /* a */ >>> a;
var rg7 = 0 /* a */ >>> b;
var rg8 = 0 /* a */ >>> 1 /* b */;
var rg9 = 0 /* a */ >>> 1;
var rg10 = a >>> 1 /* b */;
var rg11 = b >>> 1 /* b */;
var rg12 = 1 >>> 1 /* b */;
var rg6 = E.a >>> a;
var rg7 = E.a >>> b;
var rg8 = E.a >>> E.b;
var rg9 = E.a >>> 1;
var rg10 = a >>> E.b;
var rg11 = b >>> E.b;
var rg12 = 1 >>> E.b;
// operator &
var rh1 = c & a;
var rh2 = c & b;
var rh3 = c & c;
var rh4 = a & c;
var rh5 = b & c;
var rh6 = 0 /* a */ & a;
var rh7 = 0 /* a */ & b;
var rh8 = 0 /* a */ & 1 /* b */;
var rh9 = 0 /* a */ & 1;
var rh10 = a & 1 /* b */;
var rh11 = b & 1 /* b */;
var rh12 = 1 & 1 /* b */;
var rh6 = E.a & a;
var rh7 = E.a & b;
var rh8 = E.a & E.b;
var rh9 = E.a & 1;
var rh10 = a & E.b;
var rh11 = b & E.b;
var rh12 = 1 & E.b;
// operator ^
var ri1 = c ^ a;
var ri2 = c ^ b;
var ri3 = c ^ c;
var ri4 = a ^ c;
var ri5 = b ^ c;
var ri6 = 0 /* a */ ^ a;
var ri7 = 0 /* a */ ^ b;
var ri8 = 0 /* a */ ^ 1 /* b */;
var ri9 = 0 /* a */ ^ 1;
var ri10 = a ^ 1 /* b */;
var ri11 = b ^ 1 /* b */;
var ri12 = 1 ^ 1 /* b */;
var ri6 = E.a ^ a;
var ri7 = E.a ^ b;
var ri8 = E.a ^ E.b;
var ri9 = E.a ^ 1;
var ri10 = a ^ E.b;
var ri11 = b ^ E.b;
var ri12 = 1 ^ E.b;
// operator |
var rj1 = c | a;
var rj2 = c | b;
var rj3 = c | c;
var rj4 = a | c;
var rj5 = b | c;
var rj6 = 0 /* a */ | a;
var rj7 = 0 /* a */ | b;
var rj8 = 0 /* a */ | 1 /* b */;
var rj9 = 0 /* a */ | 1;
var rj10 = a | 1 /* b */;
var rj11 = b | 1 /* b */;
var rj12 = 1 | 1 /* b */;
var rj6 = E.a | a;
var rj7 = E.a | b;
var rj8 = E.a | E.b;
var rj9 = E.a | 1;
var rj10 = a | E.b;
var rj11 = b | E.b;
var rj12 = 1 | E.b;
@@ -634,18 +634,18 @@ var r1f3 = f * c;
var r1f4 = f * d;
var r1f5 = f * e;
var r1f6 = f * f;
var r1g1 = 0 /* a */ * a; //ok
var r1g2 = 0 /* a */ * b;
var r1g3 = 0 /* a */ * c; //ok
var r1g4 = 0 /* a */ * d;
var r1g5 = 0 /* a */ * e;
var r1g6 = 0 /* a */ * f;
var r1h1 = a * 1 /* b */; //ok
var r1h2 = b * 1 /* b */;
var r1h3 = c * 1 /* b */; //ok
var r1h4 = d * 1 /* b */;
var r1h5 = e * 1 /* b */;
var r1h6 = f * 1 /* b */;
var r1g1 = E.a * a; //ok
var r1g2 = E.a * b;
var r1g3 = E.a * c; //ok
var r1g4 = E.a * d;
var r1g5 = E.a * e;
var r1g6 = E.a * f;
var r1h1 = a * E.b; //ok
var r1h2 = b * E.b;
var r1h3 = c * E.b; //ok
var r1h4 = d * E.b;
var r1h5 = e * E.b;
var r1h6 = f * E.b;
// operator /
var r2a1 = a / a; //ok
var r2a2 = a / b;
@@ -683,18 +683,18 @@ var r2f3 = f / c;
var r2f4 = f / d;
var r2f5 = f / e;
var r2f6 = f / f;
var r2g1 = 0 /* a */ / a; //ok
var r2g2 = 0 /* a */ / b;
var r2g3 = 0 /* a */ / c; //ok
var r2g4 = 0 /* a */ / d;
var r2g5 = 0 /* a */ / e;
var r2g6 = 0 /* a */ / f;
var r2h1 = a / 1 /* b */; //ok
var r2h2 = b / 1 /* b */;
var r2h3 = c / 1 /* b */; //ok
var r2h4 = d / 1 /* b */;
var r2h5 = e / 1 /* b */;
var r2h6 = f / 1 /* b */;
var r2g1 = E.a / a; //ok
var r2g2 = E.a / b;
var r2g3 = E.a / c; //ok
var r2g4 = E.a / d;
var r2g5 = E.a / e;
var r2g6 = E.a / f;
var r2h1 = a / E.b; //ok
var r2h2 = b / E.b;
var r2h3 = c / E.b; //ok
var r2h4 = d / E.b;
var r2h5 = e / E.b;
var r2h6 = f / E.b;
// operator %
var r3a1 = a % a; //ok
var r3a2 = a % b;
@@ -732,18 +732,18 @@ var r3f3 = f % c;
var r3f4 = f % d;
var r3f5 = f % e;
var r3f6 = f % f;
var r3g1 = 0 /* a */ % a; //ok
var r3g2 = 0 /* a */ % b;
var r3g3 = 0 /* a */ % c; //ok
var r3g4 = 0 /* a */ % d;
var r3g5 = 0 /* a */ % e;
var r3g6 = 0 /* a */ % f;
var r3h1 = a % 1 /* b */; //ok
var r3h2 = b % 1 /* b */;
var r3h3 = c % 1 /* b */; //ok
var r3h4 = d % 1 /* b */;
var r3h5 = e % 1 /* b */;
var r3h6 = f % 1 /* b */;
var r3g1 = E.a % a; //ok
var r3g2 = E.a % b;
var r3g3 = E.a % c; //ok
var r3g4 = E.a % d;
var r3g5 = E.a % e;
var r3g6 = E.a % f;
var r3h1 = a % E.b; //ok
var r3h2 = b % E.b;
var r3h3 = c % E.b; //ok
var r3h4 = d % E.b;
var r3h5 = e % E.b;
var r3h6 = f % E.b;
// operator -
var r4a1 = a - a; //ok
var r4a2 = a - b;
@@ -781,18 +781,18 @@ var r4f3 = f - c;
var r4f4 = f - d;
var r4f5 = f - e;
var r4f6 = f - f;
var r4g1 = 0 /* a */ - a; //ok
var r4g2 = 0 /* a */ - b;
var r4g3 = 0 /* a */ - c; //ok
var r4g4 = 0 /* a */ - d;
var r4g5 = 0 /* a */ - e;
var r4g6 = 0 /* a */ - f;
var r4h1 = a - 1 /* b */; //ok
var r4h2 = b - 1 /* b */;
var r4h3 = c - 1 /* b */; //ok
var r4h4 = d - 1 /* b */;
var r4h5 = e - 1 /* b */;
var r4h6 = f - 1 /* b */;
var r4g1 = E.a - a; //ok
var r4g2 = E.a - b;
var r4g3 = E.a - c; //ok
var r4g4 = E.a - d;
var r4g5 = E.a - e;
var r4g6 = E.a - f;
var r4h1 = a - E.b; //ok
var r4h2 = b - E.b;
var r4h3 = c - E.b; //ok
var r4h4 = d - E.b;
var r4h5 = e - E.b;
var r4h6 = f - E.b;
// operator <<
var r5a1 = a << a; //ok
var r5a2 = a << b;
@@ -830,18 +830,18 @@ var r5f3 = f << c;
var r5f4 = f << d;
var r5f5 = f << e;
var r5f6 = f << f;
var r5g1 = 0 /* a */ << a; //ok
var r5g2 = 0 /* a */ << b;
var r5g3 = 0 /* a */ << c; //ok
var r5g4 = 0 /* a */ << d;
var r5g5 = 0 /* a */ << e;
var r5g6 = 0 /* a */ << f;
var r5h1 = a << 1 /* b */; //ok
var r5h2 = b << 1 /* b */;
var r5h3 = c << 1 /* b */; //ok
var r5h4 = d << 1 /* b */;
var r5h5 = e << 1 /* b */;
var r5h6 = f << 1 /* b */;
var r5g1 = E.a << a; //ok
var r5g2 = E.a << b;
var r5g3 = E.a << c; //ok
var r5g4 = E.a << d;
var r5g5 = E.a << e;
var r5g6 = E.a << f;
var r5h1 = a << E.b; //ok
var r5h2 = b << E.b;
var r5h3 = c << E.b; //ok
var r5h4 = d << E.b;
var r5h5 = e << E.b;
var r5h6 = f << E.b;
// operator >>
var r6a1 = a >> a; //ok
var r6a2 = a >> b;
@@ -879,18 +879,18 @@ var r6f3 = f >> c;
var r6f4 = f >> d;
var r6f5 = f >> e;
var r6f6 = f >> f;
var r6g1 = 0 /* a */ >> a; //ok
var r6g2 = 0 /* a */ >> b;
var r6g3 = 0 /* a */ >> c; //ok
var r6g4 = 0 /* a */ >> d;
var r6g5 = 0 /* a */ >> e;
var r6g6 = 0 /* a */ >> f;
var r6h1 = a >> 1 /* b */; //ok
var r6h2 = b >> 1 /* b */;
var r6h3 = c >> 1 /* b */; //ok
var r6h4 = d >> 1 /* b */;
var r6h5 = e >> 1 /* b */;
var r6h6 = f >> 1 /* b */;
var r6g1 = E.a >> a; //ok
var r6g2 = E.a >> b;
var r6g3 = E.a >> c; //ok
var r6g4 = E.a >> d;
var r6g5 = E.a >> e;
var r6g6 = E.a >> f;
var r6h1 = a >> E.b; //ok
var r6h2 = b >> E.b;
var r6h3 = c >> E.b; //ok
var r6h4 = d >> E.b;
var r6h5 = e >> E.b;
var r6h6 = f >> E.b;
// operator >>>
var r7a1 = a >>> a; //ok
var r7a2 = a >>> b;
@@ -928,18 +928,18 @@ var r7f3 = f >>> c;
var r7f4 = f >>> d;
var r7f5 = f >>> e;
var r7f6 = f >>> f;
var r7g1 = 0 /* a */ >>> a; //ok
var r7g2 = 0 /* a */ >>> b;
var r7g3 = 0 /* a */ >>> c; //ok
var r7g4 = 0 /* a */ >>> d;
var r7g5 = 0 /* a */ >>> e;
var r7g6 = 0 /* a */ >>> f;
var r7h1 = a >>> 1 /* b */; //ok
var r7h2 = b >>> 1 /* b */;
var r7h3 = c >>> 1 /* b */; //ok
var r7h4 = d >>> 1 /* b */;
var r7h5 = e >>> 1 /* b */;
var r7h6 = f >>> 1 /* b */;
var r7g1 = E.a >>> a; //ok
var r7g2 = E.a >>> b;
var r7g3 = E.a >>> c; //ok
var r7g4 = E.a >>> d;
var r7g5 = E.a >>> e;
var r7g6 = E.a >>> f;
var r7h1 = a >>> E.b; //ok
var r7h2 = b >>> E.b;
var r7h3 = c >>> E.b; //ok
var r7h4 = d >>> E.b;
var r7h5 = e >>> E.b;
var r7h6 = f >>> E.b;
// operator &
var r8a1 = a & a; //ok
var r8a2 = a & b;
@@ -977,18 +977,18 @@ var r8f3 = f & c;
var r8f4 = f & d;
var r8f5 = f & e;
var r8f6 = f & f;
var r8g1 = 0 /* a */ & a; //ok
var r8g2 = 0 /* a */ & b;
var r8g3 = 0 /* a */ & c; //ok
var r8g4 = 0 /* a */ & d;
var r8g5 = 0 /* a */ & e;
var r8g6 = 0 /* a */ & f;
var r8h1 = a & 1 /* b */; //ok
var r8h2 = b & 1 /* b */;
var r8h3 = c & 1 /* b */; //ok
var r8h4 = d & 1 /* b */;
var r8h5 = e & 1 /* b */;
var r8h6 = f & 1 /* b */;
var r8g1 = E.a & a; //ok
var r8g2 = E.a & b;
var r8g3 = E.a & c; //ok
var r8g4 = E.a & d;
var r8g5 = E.a & e;
var r8g6 = E.a & f;
var r8h1 = a & E.b; //ok
var r8h2 = b & E.b;
var r8h3 = c & E.b; //ok
var r8h4 = d & E.b;
var r8h5 = e & E.b;
var r8h6 = f & E.b;
// operator ^
var r9a1 = a ^ a; //ok
var r9a2 = a ^ b;
@@ -1026,18 +1026,18 @@ var r9f3 = f ^ c;
var r9f4 = f ^ d;
var r9f5 = f ^ e;
var r9f6 = f ^ f;
var r9g1 = 0 /* a */ ^ a; //ok
var r9g2 = 0 /* a */ ^ b;
var r9g3 = 0 /* a */ ^ c; //ok
var r9g4 = 0 /* a */ ^ d;
var r9g5 = 0 /* a */ ^ e;
var r9g6 = 0 /* a */ ^ f;
var r9h1 = a ^ 1 /* b */; //ok
var r9h2 = b ^ 1 /* b */;
var r9h3 = c ^ 1 /* b */; //ok
var r9h4 = d ^ 1 /* b */;
var r9h5 = e ^ 1 /* b */;
var r9h6 = f ^ 1 /* b */;
var r9g1 = E.a ^ a; //ok
var r9g2 = E.a ^ b;
var r9g3 = E.a ^ c; //ok
var r9g4 = E.a ^ d;
var r9g5 = E.a ^ e;
var r9g6 = E.a ^ f;
var r9h1 = a ^ E.b; //ok
var r9h2 = b ^ E.b;
var r9h3 = c ^ E.b; //ok
var r9h4 = d ^ E.b;
var r9h5 = e ^ E.b;
var r9h6 = f ^ E.b;
// operator |
var r10a1 = a | a; //ok
var r10a2 = a | b;
@@ -1075,15 +1075,15 @@ var r10f3 = f | c;
var r10f4 = f | d;
var r10f5 = f | e;
var r10f6 = f | f;
var r10g1 = 0 /* a */ | a; //ok
var r10g2 = 0 /* a */ | b;
var r10g3 = 0 /* a */ | c; //ok
var r10g4 = 0 /* a */ | d;
var r10g5 = 0 /* a */ | e;
var r10g6 = 0 /* a */ | f;
var r10h1 = a | 1 /* b */; //ok
var r10h2 = b | 1 /* b */;
var r10h3 = c | 1 /* b */; //ok
var r10h4 = d | 1 /* b */;
var r10h5 = e | 1 /* b */;
var r10h6 = f | 1 /* b */;
var r10g1 = E.a | a; //ok
var r10g2 = E.a | b;
var r10g3 = E.a | c; //ok
var r10g4 = E.a | d;
var r10g5 = E.a | e;
var r10g6 = E.a | f;
var r10h1 = a | E.b; //ok
var r10h2 = b | E.b;
var r10h3 = c | E.b; //ok
var r10h4 = d | E.b;
var r10h5 = e | E.b;
var r10h6 = f | E.b;
@@ -124,89 +124,89 @@ var b;
var ra1 = null * a;
var ra2 = null * b;
var ra3 = null * 1;
var ra4 = null * 0 /* a */;
var ra4 = null * E.a;
var ra5 = a * null;
var ra6 = b * null;
var ra7 = 0 * null;
var ra8 = 1 /* b */ * null;
var ra8 = E.b * null;
// operator /
var rb1 = null / a;
var rb2 = null / b;
var rb3 = null / 1;
var rb4 = null / 0 /* a */;
var rb4 = null / E.a;
var rb5 = a / null;
var rb6 = b / null;
var rb7 = 0 / null;
var rb8 = 1 /* b */ / null;
var rb8 = E.b / null;
// operator %
var rc1 = null % a;
var rc2 = null % b;
var rc3 = null % 1;
var rc4 = null % 0 /* a */;
var rc4 = null % E.a;
var rc5 = a % null;
var rc6 = b % null;
var rc7 = 0 % null;
var rc8 = 1 /* b */ % null;
var rc8 = E.b % null;
// operator -
var rd1 = null - a;
var rd2 = null - b;
var rd3 = null - 1;
var rd4 = null - 0 /* a */;
var rd4 = null - E.a;
var rd5 = a - null;
var rd6 = b - null;
var rd7 = 0 - null;
var rd8 = 1 /* b */ - null;
var rd8 = E.b - null;
// operator <<
var re1 = null << a;
var re2 = null << b;
var re3 = null << 1;
var re4 = null << 0 /* a */;
var re4 = null << E.a;
var re5 = a << null;
var re6 = b << null;
var re7 = 0 << null;
var re8 = 1 /* b */ << null;
var re8 = E.b << null;
// operator >>
var rf1 = null >> a;
var rf2 = null >> b;
var rf3 = null >> 1;
var rf4 = null >> 0 /* a */;
var rf4 = null >> E.a;
var rf5 = a >> null;
var rf6 = b >> null;
var rf7 = 0 >> null;
var rf8 = 1 /* b */ >> null;
var rf8 = E.b >> null;
// operator >>>
var rg1 = null >>> a;
var rg2 = null >>> b;
var rg3 = null >>> 1;
var rg4 = null >>> 0 /* a */;
var rg4 = null >>> E.a;
var rg5 = a >>> null;
var rg6 = b >>> null;
var rg7 = 0 >>> null;
var rg8 = 1 /* b */ >>> null;
var rg8 = E.b >>> null;
// operator &
var rh1 = null & a;
var rh2 = null & b;
var rh3 = null & 1;
var rh4 = null & 0 /* a */;
var rh4 = null & E.a;
var rh5 = a & null;
var rh6 = b & null;
var rh7 = 0 & null;
var rh8 = 1 /* b */ & null;
var rh8 = E.b & null;
// operator ^
var ri1 = null ^ a;
var ri2 = null ^ b;
var ri3 = null ^ 1;
var ri4 = null ^ 0 /* a */;
var ri4 = null ^ E.a;
var ri5 = a ^ null;
var ri6 = b ^ null;
var ri7 = 0 ^ null;
var ri8 = 1 /* b */ ^ null;
var ri8 = E.b ^ null;
// operator |
var rj1 = null | a;
var rj2 = null | b;
var rj3 = null | 1;
var rj4 = null | 0 /* a */;
var rj4 = null | E.a;
var rj5 = a | null;
var rj6 = b | null;
var rj7 = 0 | null;
var rj8 = 1 /* b */ | null;
var rj8 = E.b | null;
@@ -124,89 +124,89 @@ var b;
var ra1 = undefined * a;
var ra2 = undefined * b;
var ra3 = undefined * 1;
var ra4 = undefined * 0 /* a */;
var ra4 = undefined * E.a;
var ra5 = a * undefined;
var ra6 = b * undefined;
var ra7 = 0 * undefined;
var ra8 = 1 /* b */ * undefined;
var ra8 = E.b * undefined;
// operator /
var rb1 = undefined / a;
var rb2 = undefined / b;
var rb3 = undefined / 1;
var rb4 = undefined / 0 /* a */;
var rb4 = undefined / E.a;
var rb5 = a / undefined;
var rb6 = b / undefined;
var rb7 = 0 / undefined;
var rb8 = 1 /* b */ / undefined;
var rb8 = E.b / undefined;
// operator %
var rc1 = undefined % a;
var rc2 = undefined % b;
var rc3 = undefined % 1;
var rc4 = undefined % 0 /* a */;
var rc4 = undefined % E.a;
var rc5 = a % undefined;
var rc6 = b % undefined;
var rc7 = 0 % undefined;
var rc8 = 1 /* b */ % undefined;
var rc8 = E.b % undefined;
// operator -
var rd1 = undefined - a;
var rd2 = undefined - b;
var rd3 = undefined - 1;
var rd4 = undefined - 0 /* a */;
var rd4 = undefined - E.a;
var rd5 = a - undefined;
var rd6 = b - undefined;
var rd7 = 0 - undefined;
var rd8 = 1 /* b */ - undefined;
var rd8 = E.b - undefined;
// operator <<
var re1 = undefined << a;
var re2 = undefined << b;
var re3 = undefined << 1;
var re4 = undefined << 0 /* a */;
var re4 = undefined << E.a;
var re5 = a << undefined;
var re6 = b << undefined;
var re7 = 0 << undefined;
var re8 = 1 /* b */ << undefined;
var re8 = E.b << undefined;
// operator >>
var rf1 = undefined >> a;
var rf2 = undefined >> b;
var rf3 = undefined >> 1;
var rf4 = undefined >> 0 /* a */;
var rf4 = undefined >> E.a;
var rf5 = a >> undefined;
var rf6 = b >> undefined;
var rf7 = 0 >> undefined;
var rf8 = 1 /* b */ >> undefined;
var rf8 = E.b >> undefined;
// operator >>>
var rg1 = undefined >>> a;
var rg2 = undefined >>> b;
var rg3 = undefined >>> 1;
var rg4 = undefined >>> 0 /* a */;
var rg4 = undefined >>> E.a;
var rg5 = a >>> undefined;
var rg6 = b >>> undefined;
var rg7 = 0 >>> undefined;
var rg8 = 1 /* b */ >>> undefined;
var rg8 = E.b >>> undefined;
// operator &
var rh1 = undefined & a;
var rh2 = undefined & b;
var rh3 = undefined & 1;
var rh4 = undefined & 0 /* a */;
var rh4 = undefined & E.a;
var rh5 = a & undefined;
var rh6 = b & undefined;
var rh7 = 0 & undefined;
var rh8 = 1 /* b */ & undefined;
var rh8 = E.b & undefined;
// operator ^
var ri1 = undefined ^ a;
var ri2 = undefined ^ b;
var ri3 = undefined ^ 1;
var ri4 = undefined ^ 0 /* a */;
var ri4 = undefined ^ E.a;
var ri5 = a ^ undefined;
var ri6 = b ^ undefined;
var ri7 = 0 ^ undefined;
var ri8 = 1 /* b */ ^ undefined;
var ri8 = E.b ^ undefined;
// operator |
var rj1 = undefined | a;
var rj2 = undefined | b;
var rj3 = undefined | 1;
var rj4 = undefined | 0 /* a */;
var rj4 = undefined | E.a;
var rj5 = a | undefined;
var rj6 = b | undefined;
var rj7 = 0 | undefined;
var rj8 = 1 /* b */ | undefined;
var rj8 = E.b | undefined;
@@ -61,7 +61,7 @@ var E;
E[E["A"] = 0] = "A";
})(E || (E = {}));
var g = x;
var g2 = 0 /* A */;
var g2 = E.A;
g2 = x;
var C = (function () {
function C() {
@@ -77,8 +77,8 @@ var E;
(function (E) {
E[E["A"] = 0] = "A";
})(E || (E = {}));
x = 0 /* A */;
var f = 0 /* A */;
x = E.A;
var f = E.A;
x = f;
var g;
x = g;
+3 -3
View File
@@ -14,6 +14,6 @@ var A;
A[A["bar"] = 1] = "bar";
})(A || (A = {}));
A = undefined; // invalid LHS
A = 1 /* bar */; // invalid LHS
0 /* foo */ = 1; // invalid LHS
0 /* foo */ = 1 /* bar */; // invalid LHS
A = A.bar; // invalid LHS
A.foo = 1; // invalid LHS
A.foo = A.bar; // invalid LHS
+1 -1
View File
@@ -52,7 +52,7 @@ var E;
E[E["A"] = 0] = "A";
})(E || (E = {}));
E = null; // Error
0 /* A */ = null; // OK per spec, Error per implementation (509581)
E.A = null; // OK per spec, Error per implementation (509581)
function fn() { }
fn = null; // Should be error
var v;
@@ -43,9 +43,9 @@ var t3;
var t4;
// no error
t1 = [f1, f2];
t2 = [0 /* one */, 0 /* two */];
t2 = [E1.one, E2.two];
t3 = [5, undefined];
t4 = [0 /* one */, 0 /* two */, 20];
t4 = [E1.one, E2.two, 20];
var e1 = t1[2]; // {}
var e2 = t2[2]; // {}
var e3 = t3[2]; // any
@@ -30,11 +30,11 @@ var ENUM1;
// enum type var
var ResultIsNumber1 = ~ENUM1;
// enum type expressions
var ResultIsNumber2 = ~0 /* "A" */;
var ResultIsNumber3 = ~(0 /* A */ + 1 /* "B" */);
var ResultIsNumber2 = ~ENUM1["A"];
var ResultIsNumber3 = ~(ENUM1.A + ENUM1["B"]);
// multiple ~ operators
var ResultIsNumber4 = ~~~(0 /* "A" */ + 1 /* B */);
var ResultIsNumber4 = ~~~(ENUM1["A"] + ENUM1.B);
// miss assignment operators
~ENUM1;
~0 /* "A" */;
~0 /* A */, ~1 /* "B" */;
~ENUM1["A"];
~ENUM1.A, ~ENUM1["B"];
+1 -1
View File
@@ -90,7 +90,7 @@ var interfaceIITuple = classCDTuple;
var classCDATuple = classCDTuple;
var eleFromCDA1 = classCDATuple[2]; // A
var eleFromCDA2 = classCDATuple[5]; // C | D | A
var t10 = [0 /* one */, 0 /* one */];
var t10 = [E1.one, E2.one];
var t11 = t10;
var array1 = emptyObjTuple;
var unionTuple = [new C(), "foo"];
@@ -8,5 +8,5 @@ enum Color {
var Color;
(function (Color) {
Color[Color["Color"] = 0] = "Color";
Color[Color["Thing"] = Color.Color] = "Thing";
Color[Color["Thing"] = 0] = "Thing";
})(Color || (Color = {}));
@@ -12,6 +12,6 @@ var m1;
var e;
(function (e) {
e[e["m1"] = 0] = "m1";
e[e["m2"] = e.m1] = "m2";
e[e["m2"] = 0] = "m2";
})(e || (e = {}));
})(m1 || (m1 = {}));
+2 -2
View File
@@ -21,8 +21,8 @@ var Colors;
/** Fancy name for 'pink'*/
Colors[Colors["FancyPink"] = 1] = "FancyPink";
})(Colors || (Colors = {})); // trailing comment
var x = 0 /* Cornflower */;
x = 1 /* FancyPink */;
var x = Colors.Cornflower;
x = Colors.FancyPink;
//// [commentsEnums.d.ts]
@@ -80,56 +80,56 @@ var b;
// operator <
var ra1 = a < b;
var ra2 = b < a;
var ra3 = 0 /* a */ < b;
var ra4 = b < 0 /* a */;
var ra5 = 0 /* a */ < 0;
var ra6 = 0 < 0 /* a */;
var ra3 = E.a < b;
var ra4 = b < E.a;
var ra5 = E.a < 0;
var ra6 = 0 < E.a;
// operator >
var rb1 = a > b;
var rb2 = b > a;
var rb3 = 0 /* a */ > b;
var rb4 = b > 0 /* a */;
var rb5 = 0 /* a */ > 0;
var rb6 = 0 > 0 /* a */;
var rb3 = E.a > b;
var rb4 = b > E.a;
var rb5 = E.a > 0;
var rb6 = 0 > E.a;
// operator <=
var rc1 = a <= b;
var rc2 = b <= a;
var rc3 = 0 /* a */ <= b;
var rc4 = b <= 0 /* a */;
var rc5 = 0 /* a */ <= 0;
var rc6 = 0 <= 0 /* a */;
var rc3 = E.a <= b;
var rc4 = b <= E.a;
var rc5 = E.a <= 0;
var rc6 = 0 <= E.a;
// operator >=
var rd1 = a >= b;
var rd2 = b >= a;
var rd3 = 0 /* a */ >= b;
var rd4 = b >= 0 /* a */;
var rd5 = 0 /* a */ >= 0;
var rd6 = 0 >= 0 /* a */;
var rd3 = E.a >= b;
var rd4 = b >= E.a;
var rd5 = E.a >= 0;
var rd6 = 0 >= E.a;
// operator ==
var re1 = a == b;
var re2 = b == a;
var re3 = 0 /* a */ == b;
var re4 = b == 0 /* a */;
var re5 = 0 /* a */ == 0;
var re6 = 0 == 0 /* a */;
var re3 = E.a == b;
var re4 = b == E.a;
var re5 = E.a == 0;
var re6 = 0 == E.a;
// operator !=
var rf1 = a != b;
var rf2 = b != a;
var rf3 = 0 /* a */ != b;
var rf4 = b != 0 /* a */;
var rf5 = 0 /* a */ != 0;
var rf6 = 0 != 0 /* a */;
var rf3 = E.a != b;
var rf4 = b != E.a;
var rf5 = E.a != 0;
var rf6 = 0 != E.a;
// operator ===
var rg1 = a === b;
var rg2 = b === a;
var rg3 = 0 /* a */ === b;
var rg4 = b === 0 /* a */;
var rg5 = 0 /* a */ === 0;
var rg6 = 0 === 0 /* a */;
var rg3 = E.a === b;
var rg4 = b === E.a;
var rg5 = E.a === 0;
var rg6 = 0 === E.a;
// operator !==
var rh1 = a !== b;
var rh2 = b !== a;
var rh3 = 0 /* a */ !== b;
var rh4 = b !== 0 /* a */;
var rh5 = 0 /* a */ !== 0;
var rh6 = 0 !== 0 /* a */;
var rh3 = E.a !== b;
var rh4 = b !== E.a;
var rh5 = E.a !== 0;
var rh6 = 0 !== E.a;
@@ -64,7 +64,7 @@ x1 += b;
x1 += true;
x1 += 0;
x1 += '';
x1 += 0 /* a */;
x1 += E.a;
x1 += {};
x1 += null;
x1 += undefined;
@@ -74,20 +74,20 @@ x2 += b;
x2 += true;
x2 += 0;
x2 += '';
x2 += 0 /* a */;
x2 += E.a;
x2 += {};
x2 += null;
x2 += undefined;
var x3;
x3 += a;
x3 += 0;
x3 += 0 /* a */;
x3 += E.a;
x3 += null;
x3 += undefined;
var x4;
x4 += a;
x4 += 0;
x4 += 0 /* a */;
x4 += E.a;
x4 += null;
x4 += undefined;
var x5;
@@ -51,7 +51,7 @@ var x1;
x1 += a;
x1 += true;
x1 += 0;
x1 += 0 /* a */;
x1 += E.a;
x1 += {};
x1 += null;
x1 += undefined;
@@ -59,7 +59,7 @@ var x2;
x2 += a;
x2 += true;
x2 += 0;
x2 += 0 /* a */;
x2 += E.a;
x2 += {};
x2 += null;
x2 += undefined;
@@ -67,7 +67,7 @@ var x3;
x3 += a;
x3 += true;
x3 += 0;
x3 += 0 /* a */;
x3 += E.a;
x3 += {};
x3 += null;
x3 += undefined;
@@ -74,7 +74,7 @@ x1 *= b;
x1 *= true;
x1 *= 0;
x1 *= '';
x1 *= 0 /* a */;
x1 *= E.a;
x1 *= {};
x1 *= null;
x1 *= undefined;
@@ -84,7 +84,7 @@ x2 *= b;
x2 *= true;
x2 *= 0;
x2 *= '';
x2 *= 0 /* a */;
x2 *= E.a;
x2 *= {};
x2 *= null;
x2 *= undefined;
@@ -94,7 +94,7 @@ x3 *= b;
x3 *= true;
x3 *= 0;
x3 *= '';
x3 *= 0 /* a */;
x3 *= E.a;
x3 *= {};
x3 *= null;
x3 *= undefined;
@@ -104,7 +104,7 @@ x4 *= b;
x4 *= true;
x4 *= 0;
x4 *= '';
x4 *= 0 /* a */;
x4 *= E.a;
x4 *= {};
x4 *= null;
x4 *= undefined;
@@ -15,6 +15,6 @@ var E2;
E2[E2["x"] = 0] = "x";
})(E2 || (E2 = {}));
var o = (_a = {},
_a[0 /* x */ || 0 /* x */] = 0,
_a[E1.x || E2.x] = 0,
_a);
var _a;
@@ -15,5 +15,5 @@ var E2;
E2[E2["x"] = 0] = "x";
})(E2 || (E2 = {}));
var o = {
[0 /* x */ || 0 /* x */]: 0
[E1.x || E2.x]: 0
};
@@ -27,7 +27,7 @@ extractIndexer((_a = {},
_a[a] = "",
_a)); // Should return string
extractIndexer((_b = {},
_b[0 /* x */] = "",
_b[E.x] = "",
_b)); // Should return string
extractIndexer((_c = {},
_c["" || 0] = "",
@@ -27,7 +27,7 @@ extractIndexer({
[a]: ""
}); // Should return string
extractIndexer({
[0 /* x */]: ""
[E.x]: ""
}); // Should return string
extractIndexer({
["" || 0]: ""
@@ -12,6 +12,6 @@ var E;
E[E["member"] = 0] = "member";
})(E || (E = {}));
var v = (_a = {},
_a[0 /* member */] = 0,
_a[E.member] = 0,
_a);
var _a;
@@ -12,5 +12,5 @@ var E;
E[E["member"] = 0] = "member";
})(E || (E = {}));
var v = {
[0 /* member */]: 0
[E.member]: 0
};
@@ -365,7 +365,7 @@ var BasicFeatures = (function () {
var quoted = '"', quoted2 = "'";
var reg = /\w*/;
var objLit = { "var": number = 42, equals: function (x) { return x["var"] === 42; }, instanceof: function () { return 'objLit{42}'; } };
var weekday = 0 /* Monday */;
var weekday = Weekdays.Monday;
var con = char + f + hexchar + float.toString() + float2.toString() + reg.toString() + objLit + weekday;
//
var any = 0 ^=
+4 -4
View File
@@ -46,14 +46,14 @@ var e1;
var e2;
(function (e2) {
e2[e2["a"] = 10] = "a";
e2[e2["b"] = e2.a + 2] = "b";
e2[e2["b"] = 12] = "b";
e2[e2["c"] = 10] = "c";
})(e2 || (e2 = {}));
var e3;
(function (e3) {
e3[e3["a"] = 10] = "a";
e3[e3["b"] = Math.PI] = "b";
e3[e3["c"] = e3.a + 3] = "c";
e3[e3["c"] = 13] = "c";
})(e3 || (e3 = {}));
var e4;
(function (e4) {
@@ -80,13 +80,13 @@ declare enum e1 {
}
declare enum e2 {
a = 10,
b,
b = 12,
c = 10,
}
declare enum e3 {
a = 10,
b,
c,
c = 13,
}
declare enum e4 {
a = 0,
@@ -25,7 +25,7 @@ var days;
days[days["saturday"] = 5] = "saturday";
days[days["sunday"] = 6] = "sunday";
})(days || (days = {}));
var weekendDay = 5 /* saturday */;
var weekendDay = days.saturday;
var daysOfMonth = days;
var daysOfYear;
@@ -48,7 +48,7 @@ var d = {
m: { mod: m1 },
mc: { cl: m1.c },
me: { en: m1.e },
mh: 2 /* holiday */
mh: m1.e.holiday
};
@@ -22,8 +22,8 @@ var ENUM1;
})(ENUM1 || (ENUM1 = {}));
;
// expression
var ResultIsNumber1 = --0 /* "A" */;
var ResultIsNumber2 = 0 /* A */--;
var ResultIsNumber1 = --ENUM1["A"];
var ResultIsNumber2 = ENUM1.A--;
// miss assignment operator
--0 /* "A" */;
--ENUM1["A"];
ENUM1[A]--;
@@ -39,13 +39,13 @@ var ENUM1;
var ResultIsBoolean1 = delete ENUM;
var ResultIsBoolean2 = delete ENUM1;
// enum type expressions
var ResultIsBoolean3 = delete 0 /* "A" */;
var ResultIsBoolean4 = delete (ENUM[0] + 1 /* "B" */);
var ResultIsBoolean3 = delete ENUM1["A"];
var ResultIsBoolean4 = delete (ENUM[0] + ENUM1["B"]);
// multiple delete operators
var ResultIsBoolean5 = delete delete ENUM;
var ResultIsBoolean6 = delete delete delete (ENUM[0] + 1 /* "B" */);
var ResultIsBoolean6 = delete delete delete (ENUM[0] + ENUM1["B"]);
// miss assignment operators
delete ENUM;
delete ENUM1;
delete 1 /* B */;
delete ENUM1.B;
delete ENUM, ENUM1;
@@ -12,4 +12,4 @@ var E;
E[E["a"] = 0] = "a";
})(E || (E = {}));
var x = E;
var x = 0 /* a */;
var x = E.a;
@@ -64,8 +64,8 @@ var F;
(function (F) {
F[F["B"] = 0] = "B";
})(F || (F = {}));
var e = 0 /* A */;
var f = 0 /* B */;
var e = E.A;
var f = F.B;
e = f;
f = e;
e = 1; // ok
@@ -115,41 +115,41 @@ var E;
(function (E) {
E[E["A"] = 0] = "A";
})(E || (E = {}));
var r = foo(0 /* A */); // E
var r = foo(E.A); // E
var r2 = foo(1); // number
var r3 = foo(null); // any
var r4 = foo2(0 /* A */);
var r4 = foo3(0 /* A */);
var r4 = foo4(0 /* A */);
var r4 = foo5(0 /* A */);
var r4 = foo6(0 /* A */);
var r4 = foo7(0 /* A */);
var r4 = foo8(0 /* A */);
var r4 = foo2(E.A);
var r4 = foo3(E.A);
var r4 = foo4(E.A);
var r4 = foo5(E.A);
var r4 = foo6(E.A);
var r4 = foo7(E.A);
var r4 = foo8(E.A);
var A = (function () {
function A() {
}
return A;
})();
var r4 = foo9(0 /* A */);
var r4 = foo9(E.A);
var A2 = (function () {
function A2() {
}
return A2;
})();
var r4 = foo10(0 /* A */);
var r4 = foo11(0 /* A */);
var r4 = foo12(0 /* A */);
var r4 = foo10(E.A);
var r4 = foo11(E.A);
var r4 = foo12(E.A);
var E2;
(function (E2) {
E2[E2["A"] = 0] = "A";
})(E2 || (E2 = {}));
var r4 = foo13(0 /* A */);
var r4 = foo13(E.A);
function f() { }
var f;
(function (f) {
f.bar = 1;
})(f || (f = {}));
var r4 = foo14(0 /* A */);
var r4 = foo14(E.A);
var CC = (function () {
function CC() {
}
@@ -159,6 +159,6 @@ var CC;
(function (CC) {
CC.bar = 1;
})(CC || (CC = {}));
var r4 = foo15(0 /* A */);
var r4 = foo16(0 /* A */);
var r4 = foo16(0 /* A */);
var r4 = foo15(E.A);
var r4 = foo16(E.A);
var r4 = foo16(E.A);
@@ -57,15 +57,15 @@ var W;
var x = W;
var y = W;
var z = W; // error
var a = 0 /* a */;
var b = 0 /* a */; // error
var c = 0 /* a */;
var a = W.a;
var b = W.a; // error
var c = W.a;
var d = 3; // error
var e = 4;
var f = 0 /* a */; // error
var f = W.a; // error
var g = 5; // error
var h = 3;
var i = 0 /* a */;
i = 0 /* a */;
var i = W.a;
i = W.a;
W.D;
var p;
@@ -56,15 +56,15 @@ var W;
var x = W;
var y = W;
var z = W; // error
var a = 0 /* a */;
var b = 0 /* a */; // error
var c = 0 /* a */;
var a = W.a;
var b = W.a; // error
var c = W.a;
var d = 3; // error
var e = 4;
var f = 0 /* a */; // error
var f = W.a; // error
var g = 5; // error
var h = 3;
var i = 0 /* a */;
i = 0 /* a */;
var i = W.a;
i = W.a;
W.D;
var p;
+5 -5
View File
@@ -89,13 +89,13 @@ var E1;
E1[E1["C"] = 2] = "C";
})(E1 || (E1 = {}));
// Enum type is a subtype of Number
var x = 0 /* A */;
var x = E1.A;
// Enum object type is anonymous with properties of the enum type and numeric indexer
var e = E1;
var e;
var e;
// Reverse mapping of enum returns string name of property
var s = E1[0 /* A */];
var s = E1[e.A];
var s;
// Enum with only constant members
var E2;
@@ -108,7 +108,7 @@ var E2;
var E3;
(function (E3) {
E3[E3["X"] = 'foo'.length] = "X";
E3[E3["Y"] = 4 + 3] = "Y";
E3[E3["Y"] = 7] = "Y";
E3[E3["Z"] = +'foo'] = "Z";
})(E3 || (E3 = {}));
// Enum with constant members followed by computed members
@@ -145,7 +145,7 @@ var E8;
var E9;
(function (E9) {
E9[E9["A"] = 0] = "A";
E9[E9["B"] = E9.A] = "B";
E9[E9["B"] = 0] = "B";
})(E9 || (E9 = {}));
// (refer to .js to validate)
// Enum constant members are propagated
@@ -154,5 +154,5 @@ var doNotPropagate = [
];
// Enum computed members are not propagated
var doPropagate = [
0 /* A */, E9.B, 0 /* B */, 1 /* C */, 0 /* A */, 0 /* A */, 3 /* B */, 4 /* C */
E9.A, E9.B, E6.B, E6.C, E6.A, E5.A, E5.B, E5.C
];
+1 -1
View File
@@ -63,7 +63,7 @@ class C {
var e = E; // shouldn't error
*/
1 /* A */.A; // should error
E.A.A; // should error
var E2;
(function (E2) {
E2[E2["A"] = 0] = "A";
@@ -12,4 +12,4 @@ var Position;
Position[Position["IgnoreRulesSpecific"] = 0] = "IgnoreRulesSpecific";
})(Position || (Position = {}));
var x = IgnoreRulesSpecific.;
var y = 0 /* IgnoreRulesSpecific */;
var y = Position.IgnoreRulesSpecific;
@@ -3,15 +3,13 @@ tests/cases/conformance/enums/enumErrors.ts(3,6): error TS2431: Enum name cannot
tests/cases/conformance/enums/enumErrors.ts(4,6): error TS2431: Enum name cannot be 'string'
tests/cases/conformance/enums/enumErrors.ts(5,6): error TS2431: Enum name cannot be 'boolean'
tests/cases/conformance/enums/enumErrors.ts(9,9): error TS2322: Type 'Number' is not assignable to type 'E5'.
tests/cases/conformance/enums/enumErrors.ts(20,9): error TS2322: Type 'E9' is not assignable to type 'E10'.
tests/cases/conformance/enums/enumErrors.ts(21,9): error TS2322: Type 'E9' is not assignable to type 'E10'.
tests/cases/conformance/enums/enumErrors.ts(26,9): error TS2322: Type 'string' is not assignable to type 'E11'.
tests/cases/conformance/enums/enumErrors.ts(27,9): error TS2322: Type 'Date' is not assignable to type 'E11'.
tests/cases/conformance/enums/enumErrors.ts(28,9): error TS2304: Cannot find name 'window'.
tests/cases/conformance/enums/enumErrors.ts(29,9): error TS2322: Type '{}' is not assignable to type 'E11'.
==== tests/cases/conformance/enums/enumErrors.ts (11 errors) ====
==== tests/cases/conformance/enums/enumErrors.ts (9 errors) ====
// Enum named with PredefinedTypes
enum any { }
~~~
@@ -42,11 +40,7 @@ tests/cases/conformance/enums/enumErrors.ts(29,9): error TS2322: Type '{}' is no
// Bug 707850: This should be allowed
enum E10 {
A = E9.A,
~~~~
!!! error TS2322: Type 'E9' is not assignable to type 'E10'.
B = E9.B
~~~~
!!! error TS2322: Type 'E9' is not assignable to type 'E10'.
}
// Enum with computed member intializer of other types
+3 -3
View File
@@ -53,14 +53,14 @@ var E5;
var E9;
(function (E9) {
E9[E9["A"] = 0] = "A";
E9[E9["B"] = E9.A] = "B";
E9[E9["B"] = 0] = "B";
})(E9 || (E9 = {}));
//Enum with computed member intializer of different enum type
// Bug 707850: This should be allowed
var E10;
(function (E10) {
E10[E10["A"] = 0 /* A */] = "A";
E10[E10["B"] = E9.B] = "B";
E10[E10["A"] = 0] = "A";
E10[E10["B"] = 0] = "B";
})(E10 || (E10 = {}));
// Enum with computed member intializer of other types
var E11;
@@ -18,4 +18,4 @@ var Mode = exports.Mode;
//// [enumFromExternalModule_1.js]
///<reference path='enumFromExternalModule_0.ts'/>
var f = require('enumFromExternalModule_0');
var x = 0 /* Open */;
var x = f.Mode.Open;
+1 -1
View File
@@ -14,5 +14,5 @@ var MyEnumType;
MyEnumType[MyEnumType["bar"] = 1] = "bar";
})(MyEnumType || (MyEnumType = {}));
var _arr = [{ key: 'foo' }, { key: 'bar' }];
var enumValue = 0 /* foo */;
var enumValue = MyEnumType.foo;
var x = _arr.map(function (o) { return MyEnumType[o.key] === enumValue; }); // these are not same type
@@ -16,7 +16,7 @@ var TShirtSize;
TShirtSize[TShirtSize["Medium"] = 1] = "Medium";
TShirtSize[TShirtSize["Large"] = 2] = "Large";
})(TShirtSize || (TShirtSize = {}));
var mySize = 2 /* Large */;
var mySize = TShirtSize.Large;
var test = TShirtSize[mySize];
// specifically checking output here, bug was that test used to be undefined at runtime
test + '';
@@ -14,4 +14,4 @@ var Position2;
})(Position2 || (Position2 = {}));
var x = IgnoreRulesSpecific.; // error
var y = 1;
var z = 0 /* IgnoreRulesSpecific */; // no error
var z = Position2.IgnoreRulesSpecific; // no error
+3 -3
View File
@@ -95,7 +95,7 @@ var M1;
EConst1[EConst1["F"] = 8] = "F";
})(M1.EConst1 || (M1.EConst1 = {}));
var EConst1 = M1.EConst1;
var x = [3 /* A */, 2 /* B */, 1 /* C */, 7 /* D */, 9 /* E */, 8 /* F */];
var x = [EConst1.A, EConst1.B, EConst1.C, EConst1.D, EConst1.E, EConst1.F];
})(M1 || (M1 = {}));
// Enum with only computed members across 2 declarations with the same root module
var M2;
@@ -169,6 +169,6 @@ var M6;
})(A.Color || (A.Color = {}));
var Color = A.Color;
})(A = M6.A || (M6.A = {}));
var t = 1 /* Yellow */;
t = 0 /* Red */;
var t = A.Color.Yellow;
t = A.Color.Red;
})(M6 || (M6 = {}));
+1 -1
View File
@@ -21,7 +21,7 @@ var Enum;
(function (Enum) {
Enum[Enum["None"] = 0] = "None";
})(Enum || (Enum = {}));
var enumType = 0 /* None */;
var enumType = Enum.None;
var numberType = 0;
var anyType = 0;
enumType ^ numberType;
@@ -20,7 +20,7 @@ var Colors;
Colors[Colors["Red"] = 0] = "Red";
Colors[Colors["Green"] = 1] = "Green";
})(Colors || (Colors = {}));
var x = 0 /* Red */; // type of 'x' should be 'Colors'
var x = Colors.Red; // type of 'x' should be 'Colors'
var p = x.Green; // error
x.toFixed(); // ok
// Now with generics
@@ -6,5 +6,5 @@ enum E {
//// [enumWithParenthesizedInitializer1.js]
var E;
(function (E) {
E[E["e"] = -(3)] = "e";
E[E["e"] = -3] = "e";
})(E || (E = {}));
@@ -9,6 +9,6 @@ enum E {
var E;
(function (E) {
E[E["a"] = 0] = "a";
E[E["b"] = E.a] = "b";
E[E["c"] = undefined] = "c";
E[E["b"] = 0] = "b";
E[E["c"] = 1] = "c";
})(E || (E = {}));
@@ -26,6 +26,6 @@ var E;
module.exports = E;
//// [exportAssignmentEnum_B.js]
var EnumE = require("exportAssignmentEnum_A");
var a = 0 /* A */;
var b = 1 /* B */;
var c = 2 /* C */;
var a = EnumE.A;
var b = EnumE.B;
var c = EnumE.C;
@@ -34,7 +34,7 @@ define(["require", "exports"], function (require, exports) {
//// [foo_1.js]
define(["require", "exports", "./foo_0"], function (require, exports, foo) {
var color;
if (color === 1 /* green */) {
if (color === foo.green) {
color = foo.answer;
}
});
@@ -158,4 +158,4 @@ var Color;
Color[Color["Blue"] = 1] = "Blue";
})(Color || (Color = {}));
for (var x in Color) { }
for (var x in 1 /* Blue */) { }
for (var x in Color.Blue) { }
+1 -1
View File
@@ -14,7 +14,7 @@ var E;
(function (E) {
E[E["x"] = 0] = "x";
})(E || (E = {}));
for ({ x, y: y = 0 /* x */ } of array) {
for ({ x, y: y = E.x } of array) {
x;
y;
}
+1 -1
View File
@@ -14,7 +14,7 @@ var E;
(function (E) {
E[E["x"] = 0] = "x";
})(E || (E = {}));
for ({ x, y: = 0 /* x */ } of array) {
for ({ x, y: = E.x } of array) {
x;
y;
}
@@ -109,7 +109,7 @@ var onlyT;
var r;
return r;
}
var r7 = foo3(0 /* A */, function (x) { return 0 /* A */; }, function (x) { return 0 /* A */; }); // error
var r7 = foo3(E.A, function (x) { return E.A; }, function (x) { return F.A; }); // error
})(onlyT || (onlyT = {}));
var TU;
(function (TU) {
@@ -143,5 +143,5 @@ var TU;
var r;
return r;
}
var r7 = foo3(0 /* A */, function (x) { return 0 /* A */; }, function (x) { return 0 /* A */; });
var r7 = foo3(E.A, function (x) { return E.A; }, function (x) { return F.A; });
})(TU || (TU = {}));
@@ -54,7 +54,7 @@ var F;
(function (F) {
F[F["A"] = 0] = "A";
})(F || (F = {}));
var r6 = foo(0 /* A */, function (x) { return 0 /* A */; }, function (x) { return 0 /* A */; }); // number => number
var r6 = foo(E.A, function (x) { return E.A; }, function (x) { return F.A; }); // number => number
function foo2(x, a, b) {
var r;
return r;
@@ -61,7 +61,7 @@ var ra3 = a3 in x;
var ra4 = a4 in x;
var ra5 = null in x;
var ra6 = undefined in x;
var ra7 = 0 /* a */ in x;
var ra7 = E.a in x;
var ra8 = false in x;
var ra9 = {} in x;
// invalid right operands
@@ -70,7 +70,7 @@ var E;
})(E || (E = {}));
;
var x = 4;
var e = 1 /* B */;
var e = E.B;
var a;
var w = window;
// Assign to expression++
@@ -22,8 +22,8 @@ var ENUM1;
})(ENUM1 || (ENUM1 = {}));
;
// expression
var ResultIsNumber1 = ++1 /* "B" */;
var ResultIsNumber2 = 1 /* B */++;
var ResultIsNumber1 = ++ENUM1["B"];
var ResultIsNumber2 = ENUM1.B++;
// miss assignment operator
++1 /* "B" */;
1 /* B */++;
++ENUM1["B"];
ENUM1.B++;
@@ -112,7 +112,7 @@ var m3 = M3;
var a3;
var a3 = m3.Color;
var a3 = M3.Color;
var blue = 0 /* Blue */;
var blue = a3.Blue;
var p3;
var p3 = 1 /* Red */;
var p3 = 0 /* Blue */;
var p3 = M3.Color.Red;
var p3 = m3.Color.Blue;
@@ -72,9 +72,9 @@ var M;
function test() {
var x = [];
var result = "";
x[0] = { color: 2 /* Brown */ };
x[1] = { color: 1 /* Blue */ };
x[2] = { color: 0 /* Green */ };
x[0] = { color: Color.Brown };
x[1] = { color: Color.Blue };
x[2] = { color: Color.Green };
x = x.sort(CompareYeux); // parameter mismatch
// type of z inferred from specialized array type
var z = x.sort(CompareEyes); // ok
@@ -72,5 +72,5 @@ var a = {
l: f1,
m: M,
n: {},
o: 0 /* A */
o: E.A
};
@@ -26,7 +26,7 @@ var a;
var c;
(function (c) {
var b = a.weekend;
c.bVal = 2 /* Sunday */;
c.bVal = b.Sunday;
})(c || (c = {}));
@@ -26,7 +26,7 @@ var a;
var c;
(function (c) {
c.b = a.weekend;
c.bVal = 2 /* Sunday */;
c.bVal = c.b.Sunday;
})(c = exports.c || (exports.c = {}));
@@ -26,7 +26,7 @@ var a;
var c;
(function (c) {
var b = a.weekend;
c.bVal = 2 /* Sunday */;
c.bVal = b.Sunday;
})(c = exports.c || (exports.c = {}));
@@ -27,6 +27,6 @@ var a;
var c;
(function (c) {
var b = a.weekend;
c.bVal = 2 /* Sunday */;
c.bVal = b.Sunday;
})(c = exports.c || (exports.c = {}));
var happyFriday = c.b.Friday;
@@ -23,7 +23,7 @@ define(["require", "exports"], function (require, exports) {
var weekend = a.weekend;
})(a = exports.a || (exports.a = {}));
exports.b = a.weekend;
exports.bVal = 2 /* Sunday */;
exports.bVal = exports.b.Sunday;
});
@@ -23,7 +23,7 @@ define(["require", "exports"], function (require, exports) {
var weekend = a.weekend;
})(a = exports.a || (exports.a = {}));
var b = a.weekend;
exports.bVal = 2 /* Sunday */;
exports.bVal = b.Sunday;
});
@@ -35,8 +35,8 @@ var E2;
})(E2 || (E2 = {}));
var e;
var e2;
e = 0 /* A */;
e2 = 0 /* A */;
e = E2.A;
e2 = E.A;
e = null;
e = {};
e = '';
@@ -28,7 +28,7 @@ var E;
E[E["A"] = 0] = "A";
})(E || (E = {}));
E = x;
0 /* A */ = x;
E.A = x;
var C = (function () {
function C() {
}
@@ -64,4 +64,4 @@ var E;
E[E["A"] = 0] = "A";
})(E || (E = {}));
x = E;
x = 0 /* A */;
x = E.A;
@@ -58,5 +58,5 @@ var E;
E[E["A"] = 0] = "A";
})(E || (E = {}));
x = E;
x = 0 /* A */;
x = E.A;
x = { f: function () { } };
@@ -36,7 +36,7 @@ var E;
E[E["A"] = 0] = "A";
})(E || (E = {}));
x = E;
x = 0 /* A */;
x = E.A;
var C = (function () {
function C() {
}
@@ -29,7 +29,7 @@ var App;
var Key = Keyboard.Key;
function foo(key) { }
App.foo = foo;
foo(0 /* UP */);
foo(1 /* DOWN */);
foo(2 /* LEFT */);
foo(Key.UP);
foo(Key.DOWN);
foo(Key.LEFT);
})(App || (App = {}));
@@ -37,13 +37,13 @@ var ENUM1;
// enum type var
var ResultIsBoolean1 = !ENUM;
// enum type expressions
var ResultIsBoolean2 = !1 /* "B" */;
var ResultIsBoolean3 = !(1 /* B */ + 2 /* "C" */);
var ResultIsBoolean2 = !ENUM["B"];
var ResultIsBoolean3 = !(ENUM.B + ENUM["C"]);
// multiple ! operators
var ResultIsBoolean4 = !!ENUM;
var ResultIsBoolean5 = !!!(1 /* "B" */ + 2 /* C */);
var ResultIsBoolean5 = !!!(ENUM["B"] + ENUM.C);
// miss assignment operators
!ENUM;
!ENUM1;
!1 /* B */;
!ENUM.B;
!ENUM, ENUM1;
@@ -17,7 +17,7 @@ var Foo;
})(Foo || (Foo = {}));
var Foo;
(function (Foo) {
Foo[Foo["a"] = Foo.b] = "a";
Foo[Foo["a"] = 0] = "a";
})(Foo || (Foo = {}));
var Foo;
(function (Foo) {
@@ -11,9 +11,9 @@ enum E {
var E;
(function (E) {
E[E["a"] = 0] = "a";
E[E["b"] = E.a] = "b";
E[E["b"] = 0] = "b";
})(E || (E = {}));
var E;
(function (E) {
E[E["c"] = E.a] = "c";
E[E["c"] = 0] = "c";
})(E || (E = {}));
@@ -46,9 +46,9 @@ var C2 = (function () {
E1[E1["A"] = 0] = "A";
})(exports.E1 || (exports.E1 = {}));
var E1 = exports.E1;
var u = 0 /* A */;
var u = E1.A;
var E2;
(function (E2) {
E2[E2["B"] = 0] = "B";
})(E2 || (E2 = {}));
var v = 0 /* B */;
var v = E2.B;
@@ -119,11 +119,11 @@ var M;
var M;
(function (M) {
M.c = M.x;
M.meb = 1 /* B */;
M.meb = M.E.B;
})(M || (M = {}));
var cprime = null;
var c = new M.C();
var z = M.x;
var alpha = 0 /* A */;
var alpha = M.E.A;
var omega = M.exported_var;
c.someMethodThatCallsAnOuterMethod();
@@ -33,10 +33,10 @@ var ENUM1;
// enum type var
var ResultIsNumber1 = -ENUM;
// expressions
var ResultIsNumber2 = -1 /* "B" */;
var ResultIsNumber3 = -(1 /* B */ + 2 /* "" */);
var ResultIsNumber2 = -ENUM1["B"];
var ResultIsNumber3 = -(ENUM1.B + ENUM1[""]);
// miss assignment operators
-ENUM;
-ENUM1;
-1 /* "B" */;
-ENUM1["B"];
-ENUM, ENUM1;
@@ -57,11 +57,11 @@ var MyEmusEnum;
// Should be okay; should be a string.
var strRepresentation1 = MyEmusEnum[0];
// Should be okay; should be a string.
var strRepresentation2 = MyEmusEnum[0 /* emu */];
var strRepresentation2 = MyEmusEnum[MyEmusEnum.emu];
// Should be implicit 'any' ; property access fails, no string indexer.
var strRepresentation3 = MyEmusEnum["monehh"];
// Should be okay; should be a MyEmusEnum
var strRepresentation4 = 0 /* "emu" */;
var strRepresentation4 = MyEmusEnum["emu"];
// Should report an implicit 'any'.
var x = {}["hi"];
// Should report an implicit 'any'.
@@ -77,6 +77,6 @@ var m = {
"2": 2,
"Okay that's enough for today.": NaN
};
var mResult1 = m[0 /* emu */];
var mResult2 = m[MyEmusEnum[0 /* emu */]];
var mResult1 = m[MyEmusEnum.emu];
var mResult2 = m[MyEmusEnum[MyEmusEnum.emu]];
var mResult3 = m[hi];
@@ -56,11 +56,11 @@ var MyEmusEnum;
// Should be okay; should be a string.
var strRepresentation1 = MyEmusEnum[0];
// Should be okay; should be a string.
var strRepresentation2 = MyEmusEnum[0 /* emu */];
var strRepresentation2 = MyEmusEnum[MyEmusEnum.emu];
// Should be okay, as we suppress implicit 'any' property access checks
var strRepresentation3 = MyEmusEnum["monehh"];
// Should be okay; should be a MyEmusEnum
var strRepresentation4 = 0 /* "emu" */;
var strRepresentation4 = MyEmusEnum["emu"];
// Should be okay, as we suppress implicit 'any' property access checks
var x = {}["hi"];
// Should be okay, as we suppress implicit 'any' property access checks
@@ -76,6 +76,6 @@ var m = {
"2": 2,
"Okay that's enough for today.": NaN
};
var mResult1 = m[0 /* emu */];
var mResult2 = m[MyEmusEnum[0 /* emu */]];
var mResult1 = m[MyEmusEnum.emu];
var mResult2 = m[MyEmusEnum[MyEmusEnum.emu]];
var mResult3 = m[hi];
@@ -139,8 +139,8 @@ var E;
})(E || (E = {}));
var r13 = true ? E : null;
var r13 = true ? null : E;
var r14 = true ? 0 /* A */ : null;
var r14 = true ? null : 0 /* A */;
var r14 = true ? E.A : null;
var r14 = true ? null : E.A;
function f() { }
var f;
(function (f) {
@@ -87,7 +87,7 @@ var E;
(function (E) {
E[E["A"] = 0] = "A";
})(E || (E = {}));
var b = { foo: 0 /* A */ };
var b = { foo: E.A };
function foo5(x) { }
function foo5b(x) { }
function foo6(x) { }
@@ -34,7 +34,7 @@ var x9 = "test" + null;
var x10 = "test" + undefined;
var x11 = null + "test";
var x12 = undefined + "test";
var x13 = null + 0 /* x */;
var x14 = undefined + 0 /* x */;
var x15 = 0 /* x */ + null;
var x16 = 0 /* x */ + undefined;
var x13 = null + E.x;
var x14 = undefined + E.x;
var x15 = E.x + null;
var x16 = E.x + undefined;
+2 -2
View File
@@ -12,7 +12,7 @@
(function (SignatureFlags) {
SignatureFlags[SignatureFlags["None"] = 0] = "None";
SignatureFlags[SignatureFlags["IsIndexer"] = 1] = "IsIndexer";
SignatureFlags[SignatureFlags["IsStringIndexer"] = 1 << 1] = "IsStringIndexer";
SignatureFlags[SignatureFlags["IsNumberIndexer"] = 1 << 2] = "IsNumberIndexer";
SignatureFlags[SignatureFlags["IsStringIndexer"] = 2] = "IsStringIndexer";
SignatureFlags[SignatureFlags["IsNumberIndexer"] = 4] = "IsNumberIndexer";
})(exports.SignatureFlags || (exports.SignatureFlags = {}));
var SignatureFlags = exports.SignatureFlags;
+2 -2
View File
@@ -12,7 +12,7 @@
(function (SignatureFlags) {
SignatureFlags[SignatureFlags["None"] = 0] = "None";
SignatureFlags[SignatureFlags["IsIndexer"] = 1] = "IsIndexer";
SignatureFlags[SignatureFlags["IsStringIndexer"] = 1 << 1] = "IsStringIndexer";
SignatureFlags[SignatureFlags["IsNumberIndexer"] = 1 << 2] = "IsNumberIndexer";
SignatureFlags[SignatureFlags["IsStringIndexer"] = 2] = "IsStringIndexer";
SignatureFlags[SignatureFlags["IsNumberIndexer"] = 4] = "IsNumberIndexer";
})(exports.SignatureFlags || (exports.SignatureFlags = {}));
var SignatureFlags = exports.SignatureFlags;

Some files were not shown because too many files have changed in this diff Show More