mirror of
https://github.com/microsoft/TypeScript.git
synced 2025-11-18 17:21:48 +00:00
Accept baselines.
This commit is contained in:
@@ -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];
|
||||
*/
|
||||
Reference in New Issue
Block a user