Accept baselines.

This commit is contained in:
jbondc
2015-10-08 08:21:28 -04:00
parent 8960f523ea
commit 82eb992dc4
4 changed files with 215 additions and 6 deletions
+6 -6
View File
@@ -8134,12 +8134,12 @@ namespace ts {
if (indexArgumentExpression.kind === SyntaxKind.StringLiteral || indexArgumentExpression.kind === SyntaxKind.NumericLiteral) {
return (<LiteralExpression>indexArgumentExpression).text;
}
if (indexArgumentExpression.kind === SyntaxKind.ElementAccessExpression || indexArgumentExpression.kind === SyntaxKind.PropertyAccessExpression) {
let value = getConstantValue(<ElementAccessExpression | PropertyAccessExpression>indexArgumentExpression);
if (value !== undefined) {
return value.toString();
}
}
if (indexArgumentExpression.kind === SyntaxKind.ElementAccessExpression || indexArgumentExpression.kind === SyntaxKind.PropertyAccessExpression) {
let value = getConstantValue(<ElementAccessExpression | PropertyAccessExpression>indexArgumentExpression);
if (value !== undefined) {
return value.toString();
}
}
if (checkThatExpressionIsProperSymbolReference(indexArgumentExpression, indexArgumentType, /*reportError*/ false)) {
let rightHandSideName = (<Identifier>(<PropertyAccessExpression>indexArgumentExpression).name).text;
return getPropertyNameForKnownSymbolName(rightHandSideName);
@@ -0,0 +1,69 @@
//// [constIndexedAccess.ts]
const enum numbers {
zero,
one
}
interface indexAccess {
0: string;
1: number;
}
let test: indexAccess;
let s = test[0];
let n = test[1];
let s1 = test[numbers.zero];
let n1 = test[numbers.one];
/*
TODO: revisit with const propagation
const zero = 0;
const one = 1;
let s2 = test[zero];
let n2 = test[one];
const zeroRef = zero;
const oneRef = one;
let s3 = test[zeroRef];
let n3 = test[oneRef];
const zeroRefEnum = numbers.zero;
const oneRefEnum = numbers.one;
let s4 = test[zeroRefEnum];
let n4 = test[oneRefEnum];
*/
//// [constIndexedAccess.js]
var test;
var s = test[0];
var n = test[1];
var s1 = test[0 /* zero */];
var n1 = test[1 /* one */];
/*
TODO: revisit with const propagation
const zero = 0;
const one = 1;
let s2 = test[zero];
let n2 = test[one];
const zeroRef = zero;
const oneRef = one;
let s3 = test[zeroRef];
let n3 = test[oneRef];
const zeroRefEnum = numbers.zero;
const oneRefEnum = numbers.one;
let s4 = test[zeroRefEnum];
let n4 = test[oneRefEnum];
*/
@@ -0,0 +1,68 @@
=== tests/cases/compiler/constIndexedAccess.ts ===
const enum numbers {
>numbers : Symbol(numbers, Decl(constIndexedAccess.ts, 0, 0))
zero,
>zero : Symbol(numbers.zero, Decl(constIndexedAccess.ts, 1, 20))
one
>one : Symbol(numbers.one, Decl(constIndexedAccess.ts, 2, 6))
}
interface indexAccess {
>indexAccess : Symbol(indexAccess, Decl(constIndexedAccess.ts, 4, 1))
0: string;
1: number;
}
let test: indexAccess;
>test : Symbol(test, Decl(constIndexedAccess.ts, 11, 3))
>indexAccess : Symbol(indexAccess, Decl(constIndexedAccess.ts, 4, 1))
let s = test[0];
>s : Symbol(s, Decl(constIndexedAccess.ts, 13, 3))
>test : Symbol(test, Decl(constIndexedAccess.ts, 11, 3))
>0 : Symbol(indexAccess.0, Decl(constIndexedAccess.ts, 6, 23))
let n = test[1];
>n : Symbol(n, Decl(constIndexedAccess.ts, 14, 3))
>test : Symbol(test, Decl(constIndexedAccess.ts, 11, 3))
>1 : Symbol(indexAccess.1, Decl(constIndexedAccess.ts, 7, 11))
let s1 = test[numbers.zero];
>s1 : Symbol(s1, Decl(constIndexedAccess.ts, 16, 3))
>test : Symbol(test, Decl(constIndexedAccess.ts, 11, 3))
>numbers.zero : Symbol(numbers.zero, Decl(constIndexedAccess.ts, 1, 20))
>numbers : Symbol(numbers, Decl(constIndexedAccess.ts, 0, 0))
>zero : Symbol(numbers.zero, Decl(constIndexedAccess.ts, 1, 20))
let n1 = test[numbers.one];
>n1 : Symbol(n1, Decl(constIndexedAccess.ts, 17, 3))
>test : Symbol(test, Decl(constIndexedAccess.ts, 11, 3))
>numbers.one : Symbol(numbers.one, Decl(constIndexedAccess.ts, 2, 6))
>numbers : Symbol(numbers, Decl(constIndexedAccess.ts, 0, 0))
>one : Symbol(numbers.one, Decl(constIndexedAccess.ts, 2, 6))
/*
TODO: revisit with const propagation
const zero = 0;
const one = 1;
let s2 = test[zero];
let n2 = test[one];
const zeroRef = zero;
const oneRef = one;
let s3 = test[zeroRef];
let n3 = test[oneRef];
const zeroRefEnum = numbers.zero;
const oneRefEnum = numbers.one;
let s4 = test[zeroRefEnum];
let n4 = test[oneRefEnum];
*/
@@ -0,0 +1,72 @@
=== tests/cases/compiler/constIndexedAccess.ts ===
const enum numbers {
>numbers : numbers
zero,
>zero : numbers
one
>one : numbers
}
interface indexAccess {
>indexAccess : indexAccess
0: string;
1: number;
}
let test: indexAccess;
>test : indexAccess
>indexAccess : indexAccess
let s = test[0];
>s : string
>test[0] : string
>test : indexAccess
>0 : number
let n = test[1];
>n : number
>test[1] : number
>test : indexAccess
>1 : number
let s1 = test[numbers.zero];
>s1 : string
>test[numbers.zero] : string
>test : indexAccess
>numbers.zero : numbers
>numbers : typeof numbers
>zero : numbers
let n1 = test[numbers.one];
>n1 : number
>test[numbers.one] : number
>test : indexAccess
>numbers.one : numbers
>numbers : typeof numbers
>one : numbers
/*
TODO: revisit with const propagation
const zero = 0;
const one = 1;
let s2 = test[zero];
let n2 = test[one];
const zeroRef = zero;
const oneRef = one;
let s3 = test[zeroRef];
let n3 = test[oneRef];
const zeroRefEnum = numbers.zero;
const oneRefEnum = numbers.one;
let s4 = test[zeroRefEnum];
let n4 = test[oneRefEnum];
*/