From 318575ce75c2c10e714336a9326405c63f49affd Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Tue, 14 Oct 2014 14:51:28 -0700 Subject: [PATCH] Ensure duplicate let/const declarations accross files are reported --- src/compiler/checker.ts | 1 + .../letDeclarations-scopes-duplicates2.errors.txt | 11 +++++++++++ .../reference/letDeclarations-scopes-duplicates2.js | 13 +++++++++++++ .../letDeclarations-scopes-duplicates3.errors.txt | 11 +++++++++++ .../reference/letDeclarations-scopes-duplicates3.js | 13 +++++++++++++ .../letDeclarations-scopes-duplicates4.errors.txt | 11 +++++++++++ .../reference/letDeclarations-scopes-duplicates4.js | 13 +++++++++++++ .../letDeclarations-scopes-duplicates5.errors.txt | 11 +++++++++++ .../reference/letDeclarations-scopes-duplicates5.js | 13 +++++++++++++ .../letDeclarations-scopes-duplicates6.errors.txt | 11 +++++++++++ .../reference/letDeclarations-scopes-duplicates6.js | 13 +++++++++++++ .../letDeclarations-scopes-duplicates7.errors.txt | 11 +++++++++++ .../reference/letDeclarations-scopes-duplicates7.js | 13 +++++++++++++ .../compiler/letDeclarations-scopes-duplicates2.ts | 7 +++++++ .../compiler/letDeclarations-scopes-duplicates3.ts | 7 +++++++ .../compiler/letDeclarations-scopes-duplicates4.ts | 7 +++++++ .../compiler/letDeclarations-scopes-duplicates5.ts | 7 +++++++ .../compiler/letDeclarations-scopes-duplicates6.ts | 7 +++++++ .../compiler/letDeclarations-scopes-duplicates7.ts | 7 +++++++ 19 files changed, 187 insertions(+) create mode 100644 tests/baselines/reference/letDeclarations-scopes-duplicates2.errors.txt create mode 100644 tests/baselines/reference/letDeclarations-scopes-duplicates2.js create mode 100644 tests/baselines/reference/letDeclarations-scopes-duplicates3.errors.txt create mode 100644 tests/baselines/reference/letDeclarations-scopes-duplicates3.js create mode 100644 tests/baselines/reference/letDeclarations-scopes-duplicates4.errors.txt create mode 100644 tests/baselines/reference/letDeclarations-scopes-duplicates4.js create mode 100644 tests/baselines/reference/letDeclarations-scopes-duplicates5.errors.txt create mode 100644 tests/baselines/reference/letDeclarations-scopes-duplicates5.js create mode 100644 tests/baselines/reference/letDeclarations-scopes-duplicates6.errors.txt create mode 100644 tests/baselines/reference/letDeclarations-scopes-duplicates6.js create mode 100644 tests/baselines/reference/letDeclarations-scopes-duplicates7.errors.txt create mode 100644 tests/baselines/reference/letDeclarations-scopes-duplicates7.js create mode 100644 tests/cases/compiler/letDeclarations-scopes-duplicates2.ts create mode 100644 tests/cases/compiler/letDeclarations-scopes-duplicates3.ts create mode 100644 tests/cases/compiler/letDeclarations-scopes-duplicates4.ts create mode 100644 tests/cases/compiler/letDeclarations-scopes-duplicates5.ts create mode 100644 tests/cases/compiler/letDeclarations-scopes-duplicates6.ts create mode 100644 tests/cases/compiler/letDeclarations-scopes-duplicates7.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 08f2654d4d..76533abf50 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -172,6 +172,7 @@ module ts { function getExcludedSymbolFlags(flags: SymbolFlags): SymbolFlags { var result: SymbolFlags = 0; + if (flags & SymbolFlags.BlockScoped) result |= SymbolFlags.BlockScopedExcludes; if (flags & SymbolFlags.Variable) result |= SymbolFlags.VariableExcludes; if (flags & SymbolFlags.Property) result |= SymbolFlags.PropertyExcludes; if (flags & SymbolFlags.EnumMember) result |= SymbolFlags.EnumMemberExcludes; diff --git a/tests/baselines/reference/letDeclarations-scopes-duplicates2.errors.txt b/tests/baselines/reference/letDeclarations-scopes-duplicates2.errors.txt new file mode 100644 index 0000000000..324385b406 --- /dev/null +++ b/tests/baselines/reference/letDeclarations-scopes-duplicates2.errors.txt @@ -0,0 +1,11 @@ +tests/cases/compiler/file2.ts(1,5): error TS2300: Duplicate identifier 'var1'. + + +==== tests/cases/compiler/file1.ts (0 errors) ==== + + let var1 = 0; + +==== tests/cases/compiler/file2.ts (1 errors) ==== + let var1 = 0; + ~~~~ +!!! error TS2300: Duplicate identifier 'var1'. \ No newline at end of file diff --git a/tests/baselines/reference/letDeclarations-scopes-duplicates2.js b/tests/baselines/reference/letDeclarations-scopes-duplicates2.js new file mode 100644 index 0000000000..9b35bd81c7 --- /dev/null +++ b/tests/baselines/reference/letDeclarations-scopes-duplicates2.js @@ -0,0 +1,13 @@ +//// [tests/cases/compiler/letDeclarations-scopes-duplicates2.ts] //// + +//// [file1.ts] + +let var1 = 0; + +//// [file2.ts] +let var1 = 0; + +//// [file1.js] +let var1 = 0; +//// [file2.js] +let var1 = 0; diff --git a/tests/baselines/reference/letDeclarations-scopes-duplicates3.errors.txt b/tests/baselines/reference/letDeclarations-scopes-duplicates3.errors.txt new file mode 100644 index 0000000000..a85ca8bad0 --- /dev/null +++ b/tests/baselines/reference/letDeclarations-scopes-duplicates3.errors.txt @@ -0,0 +1,11 @@ +tests/cases/compiler/file2.ts(1,7): error TS2300: Duplicate identifier 'var1'. + + +==== tests/cases/compiler/file1.ts (0 errors) ==== + + let var1 = 0; + +==== tests/cases/compiler/file2.ts (1 errors) ==== + const var1 = 0; + ~~~~ +!!! error TS2300: Duplicate identifier 'var1'. \ No newline at end of file diff --git a/tests/baselines/reference/letDeclarations-scopes-duplicates3.js b/tests/baselines/reference/letDeclarations-scopes-duplicates3.js new file mode 100644 index 0000000000..e74caf3721 --- /dev/null +++ b/tests/baselines/reference/letDeclarations-scopes-duplicates3.js @@ -0,0 +1,13 @@ +//// [tests/cases/compiler/letDeclarations-scopes-duplicates3.ts] //// + +//// [file1.ts] + +let var1 = 0; + +//// [file2.ts] +const var1 = 0; + +//// [file1.js] +let var1 = 0; +//// [file2.js] +const var1 = 0; diff --git a/tests/baselines/reference/letDeclarations-scopes-duplicates4.errors.txt b/tests/baselines/reference/letDeclarations-scopes-duplicates4.errors.txt new file mode 100644 index 0000000000..1a43932040 --- /dev/null +++ b/tests/baselines/reference/letDeclarations-scopes-duplicates4.errors.txt @@ -0,0 +1,11 @@ +tests/cases/compiler/file2.ts(1,5): error TS2300: Duplicate identifier 'var1'. + + +==== tests/cases/compiler/file1.ts (0 errors) ==== + + const var1 = 0; + +==== tests/cases/compiler/file2.ts (1 errors) ==== + let var1 = 0; + ~~~~ +!!! error TS2300: Duplicate identifier 'var1'. \ No newline at end of file diff --git a/tests/baselines/reference/letDeclarations-scopes-duplicates4.js b/tests/baselines/reference/letDeclarations-scopes-duplicates4.js new file mode 100644 index 0000000000..ac338e31c7 --- /dev/null +++ b/tests/baselines/reference/letDeclarations-scopes-duplicates4.js @@ -0,0 +1,13 @@ +//// [tests/cases/compiler/letDeclarations-scopes-duplicates4.ts] //// + +//// [file1.ts] + +const var1 = 0; + +//// [file2.ts] +let var1 = 0; + +//// [file1.js] +const var1 = 0; +//// [file2.js] +let var1 = 0; diff --git a/tests/baselines/reference/letDeclarations-scopes-duplicates5.errors.txt b/tests/baselines/reference/letDeclarations-scopes-duplicates5.errors.txt new file mode 100644 index 0000000000..49737b1774 --- /dev/null +++ b/tests/baselines/reference/letDeclarations-scopes-duplicates5.errors.txt @@ -0,0 +1,11 @@ +tests/cases/compiler/file2.ts(1,7): error TS2300: Duplicate identifier 'var1'. + + +==== tests/cases/compiler/file1.ts (0 errors) ==== + + const var1 = 0; + +==== tests/cases/compiler/file2.ts (1 errors) ==== + const var1 = 0; + ~~~~ +!!! error TS2300: Duplicate identifier 'var1'. \ No newline at end of file diff --git a/tests/baselines/reference/letDeclarations-scopes-duplicates5.js b/tests/baselines/reference/letDeclarations-scopes-duplicates5.js new file mode 100644 index 0000000000..2424c91ab9 --- /dev/null +++ b/tests/baselines/reference/letDeclarations-scopes-duplicates5.js @@ -0,0 +1,13 @@ +//// [tests/cases/compiler/letDeclarations-scopes-duplicates5.ts] //// + +//// [file1.ts] + +const var1 = 0; + +//// [file2.ts] +const var1 = 0; + +//// [file1.js] +const var1 = 0; +//// [file2.js] +const var1 = 0; diff --git a/tests/baselines/reference/letDeclarations-scopes-duplicates6.errors.txt b/tests/baselines/reference/letDeclarations-scopes-duplicates6.errors.txt new file mode 100644 index 0000000000..2904227c8f --- /dev/null +++ b/tests/baselines/reference/letDeclarations-scopes-duplicates6.errors.txt @@ -0,0 +1,11 @@ +tests/cases/compiler/file2.ts(1,5): error TS2300: Duplicate identifier 'var1'. + + +==== tests/cases/compiler/file1.ts (0 errors) ==== + + var var1 = 0; + +==== tests/cases/compiler/file2.ts (1 errors) ==== + let var1 = 0; + ~~~~ +!!! error TS2300: Duplicate identifier 'var1'. \ No newline at end of file diff --git a/tests/baselines/reference/letDeclarations-scopes-duplicates6.js b/tests/baselines/reference/letDeclarations-scopes-duplicates6.js new file mode 100644 index 0000000000..24edc0b7bd --- /dev/null +++ b/tests/baselines/reference/letDeclarations-scopes-duplicates6.js @@ -0,0 +1,13 @@ +//// [tests/cases/compiler/letDeclarations-scopes-duplicates6.ts] //// + +//// [file1.ts] + +var var1 = 0; + +//// [file2.ts] +let var1 = 0; + +//// [file1.js] +var var1 = 0; +//// [file2.js] +let var1 = 0; diff --git a/tests/baselines/reference/letDeclarations-scopes-duplicates7.errors.txt b/tests/baselines/reference/letDeclarations-scopes-duplicates7.errors.txt new file mode 100644 index 0000000000..8dd0418b60 --- /dev/null +++ b/tests/baselines/reference/letDeclarations-scopes-duplicates7.errors.txt @@ -0,0 +1,11 @@ +tests/cases/compiler/file2.ts(1,5): error TS2300: Duplicate identifier 'var1'. + + +==== tests/cases/compiler/file1.ts (0 errors) ==== + + let var1 = 0; + +==== tests/cases/compiler/file2.ts (1 errors) ==== + var var1 = 0; + ~~~~ +!!! error TS2300: Duplicate identifier 'var1'. \ No newline at end of file diff --git a/tests/baselines/reference/letDeclarations-scopes-duplicates7.js b/tests/baselines/reference/letDeclarations-scopes-duplicates7.js new file mode 100644 index 0000000000..4cbc359e2c --- /dev/null +++ b/tests/baselines/reference/letDeclarations-scopes-duplicates7.js @@ -0,0 +1,13 @@ +//// [tests/cases/compiler/letDeclarations-scopes-duplicates7.ts] //// + +//// [file1.ts] + +let var1 = 0; + +//// [file2.ts] +var var1 = 0; + +//// [file1.js] +let var1 = 0; +//// [file2.js] +var var1 = 0; diff --git a/tests/cases/compiler/letDeclarations-scopes-duplicates2.ts b/tests/cases/compiler/letDeclarations-scopes-duplicates2.ts new file mode 100644 index 0000000000..40ddc14fc3 --- /dev/null +++ b/tests/cases/compiler/letDeclarations-scopes-duplicates2.ts @@ -0,0 +1,7 @@ +// @target: ES6 + +// @Filename: file1.ts +let var1 = 0; + +// @Filename: file2.ts +let var1 = 0; \ No newline at end of file diff --git a/tests/cases/compiler/letDeclarations-scopes-duplicates3.ts b/tests/cases/compiler/letDeclarations-scopes-duplicates3.ts new file mode 100644 index 0000000000..1f10efa538 --- /dev/null +++ b/tests/cases/compiler/letDeclarations-scopes-duplicates3.ts @@ -0,0 +1,7 @@ +// @target: ES6 + +// @Filename: file1.ts +let var1 = 0; + +// @Filename: file2.ts +const var1 = 0; \ No newline at end of file diff --git a/tests/cases/compiler/letDeclarations-scopes-duplicates4.ts b/tests/cases/compiler/letDeclarations-scopes-duplicates4.ts new file mode 100644 index 0000000000..150d434a2b --- /dev/null +++ b/tests/cases/compiler/letDeclarations-scopes-duplicates4.ts @@ -0,0 +1,7 @@ +// @target: ES6 + +// @Filename: file1.ts +const var1 = 0; + +// @Filename: file2.ts +let var1 = 0; \ No newline at end of file diff --git a/tests/cases/compiler/letDeclarations-scopes-duplicates5.ts b/tests/cases/compiler/letDeclarations-scopes-duplicates5.ts new file mode 100644 index 0000000000..da24985349 --- /dev/null +++ b/tests/cases/compiler/letDeclarations-scopes-duplicates5.ts @@ -0,0 +1,7 @@ +// @target: ES6 + +// @Filename: file1.ts +const var1 = 0; + +// @Filename: file2.ts +const var1 = 0; \ No newline at end of file diff --git a/tests/cases/compiler/letDeclarations-scopes-duplicates6.ts b/tests/cases/compiler/letDeclarations-scopes-duplicates6.ts new file mode 100644 index 0000000000..f71b762379 --- /dev/null +++ b/tests/cases/compiler/letDeclarations-scopes-duplicates6.ts @@ -0,0 +1,7 @@ +// @target: ES6 + +// @Filename: file1.ts +var var1 = 0; + +// @Filename: file2.ts +let var1 = 0; \ No newline at end of file diff --git a/tests/cases/compiler/letDeclarations-scopes-duplicates7.ts b/tests/cases/compiler/letDeclarations-scopes-duplicates7.ts new file mode 100644 index 0000000000..829fda0c92 --- /dev/null +++ b/tests/cases/compiler/letDeclarations-scopes-duplicates7.ts @@ -0,0 +1,7 @@ +// @target: ES6 + +// @Filename: file1.ts +let var1 = 0; + +// @Filename: file2.ts +var var1 = 0; \ No newline at end of file