Do not allow use of block-scoped variable before its definition

This commit is contained in:
Mohamed Hegazy
2014-10-13 22:19:19 -07:00
parent cf89f5cf58
commit 1dde985f1d
16 changed files with 220 additions and 6 deletions

View File

@@ -0,0 +1,21 @@
tests/cases/compiler/constDeclarations-useBeforeDefinition.ts(3,5): error TS2448: Block-scoped variable 'c1' used before its declaration.
tests/cases/compiler/constDeclarations-useBeforeDefinition.ts(9,5): error TS2448: Block-scoped variable 'v1' used before its declaration.
==== tests/cases/compiler/constDeclarations-useBeforeDefinition.ts (2 errors) ====
{
c1;
~~
!!! error TS2448: Block-scoped variable 'c1' used before its declaration.
const c1 = 0;
}
var v1;
{
v1;
~~
!!! error TS2448: Block-scoped variable 'v1' used before its declaration.
const v1 = 0;
}

View File

@@ -0,0 +1,24 @@
//// [constDeclarations-useBeforeDefinition.ts]
{
c1;
const c1 = 0;
}
var v1;
{
v1;
const v1 = 0;
}
//// [constDeclarations-useBeforeDefinition.js]
{
c1;
const c1 = 0;
}
var v1;
{
v1;
const v1 = 0;
}

View File

@@ -0,0 +1,11 @@
tests/cases/compiler/file1.ts(2,1): error TS2448: Block-scoped variable 'c' used before its declaration.
==== tests/cases/compiler/file1.ts (1 errors) ====
c;
~
!!! error TS2448: Block-scoped variable 'c' used before its declaration.
==== tests/cases/compiler/file2.ts (0 errors) ====
const c = 0;

View File

@@ -0,0 +1,12 @@
//// [tests/cases/compiler/constDeclarations-useBeforeDefinition2.ts] ////
//// [file1.ts]
c;
//// [file2.ts]
const c = 0;
//// [out.js]
c;
const c = 0;

View File

@@ -0,0 +1,21 @@
tests/cases/compiler/letDeclarations-useBeforeDefinition.ts(3,5): error TS2448: Block-scoped variable 'l1' used before its declaration.
tests/cases/compiler/letDeclarations-useBeforeDefinition.ts(9,5): error TS2448: Block-scoped variable 'v1' used before its declaration.
==== tests/cases/compiler/letDeclarations-useBeforeDefinition.ts (2 errors) ====
{
l1;
~~
!!! error TS2448: Block-scoped variable 'l1' used before its declaration.
let l1;
}
var v1;
{
v1;
~~
!!! error TS2448: Block-scoped variable 'v1' used before its declaration.
let v1 = 0;
}

View File

@@ -0,0 +1,24 @@
//// [letDeclarations-useBeforeDefinition.ts]
{
l1;
let l1;
}
var v1;
{
v1;
let v1 = 0;
}
//// [letDeclarations-useBeforeDefinition.js]
{
l1;
let l1;
}
var v1;
{
v1;
let v1 = 0;
}

View File

@@ -0,0 +1,11 @@
tests/cases/compiler/file1.ts(2,1): error TS2448: Block-scoped variable 'l' used before its declaration.
==== tests/cases/compiler/file1.ts (1 errors) ====
l;
~
!!! error TS2448: Block-scoped variable 'l' used before its declaration.
==== tests/cases/compiler/file2.ts (0 errors) ====
const l = 0;

View File

@@ -0,0 +1,12 @@
//// [tests/cases/compiler/letDeclarations-useBeforeDefinition2.ts] ////
//// [file1.ts]
l;
//// [file2.ts]
const l = 0;
//// [out.js]
l;
const l = 0;

View File

@@ -0,0 +1,18 @@
tests/cases/compiler/letDeclarations3.ts(3,5): error TS2300: Duplicate identifier 'l1'.
tests/cases/compiler/letDeclarations3.ts(3,9): error TS2300: Duplicate identifier 'l1'.
tests/cases/compiler/letDeclarations3.ts(3,13): error TS2300: Duplicate identifier 'l1'.
==== tests/cases/compiler/letDeclarations3.ts (3 errors) ====
// Duplicate variables
let l1, l1, l1;
~~
!!! error TS2300: Duplicate identifier 'l1'.
~~
!!! error TS2300: Duplicate identifier 'l1'.
~~
!!! error TS2300: Duplicate identifier 'l1'.
// unexpected 'let'
let l2, let, l3;

View File

@@ -0,0 +1,12 @@
// @target: ES6
{
c1;
const c1 = 0;
}
var v1;
{
v1;
const v1 = 0;
}

View File

@@ -0,0 +1,8 @@
// @target: ES6
// @out: out.js
// @Filename: file1.ts
c;
// @Filename: file2.ts
const c = 0;

View File

@@ -0,0 +1,12 @@
// @target: ES6
{
l1;
let l1;
}
var v1;
{
v1;
let v1 = 0;
}

View File

@@ -0,0 +1,8 @@
// @target: ES6
// @out: out.js
// @Filename: file1.ts
l;
// @Filename: file2.ts
const l = 0;