Merge branch 'master' into skipLibCheck

This commit is contained in:
Anders Hejlsberg
2016-05-23 10:36:05 -07:00
17 changed files with 145 additions and 231 deletions

View File

@@ -443,7 +443,7 @@
"category": "Error",
"code": 1147
},
"Cannot compile modules unless the '--module' flag is provided with a valid module type. Consider setting the 'module' compiler option in a 'tsconfig.json' file.": {
"Cannot use imports, exports, or module augmentations when '--module' is 'none'.": {
"category": "Error",
"code": 1148
},
@@ -2296,7 +2296,7 @@
"category": "Error",
"code": 5062
},
"Substututions for pattern '{0}' should be an array.": {
"Substitutions for pattern '{0}' should be an array.": {
"category": "Error",
"code": 5063
},
@@ -2755,7 +2755,12 @@
"Resolving real path for '{0}', result '{1}'": {
"category": "Message",
"code": 6130
},
},
"Cannot compile modules using option '{0}' unless the '--module' flag is 'amd' or 'system'.": {
"category": "Error",
"code": 6131
},
"Variable '{0}' implicitly has an '{1}' type.": {
"category": "Error",
"code": 7005

View File

@@ -2021,7 +2021,7 @@ namespace ts {
}
}
else {
programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Substututions_for_pattern_0_should_be_an_array, key));
programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Substitutions_for_pattern_0_should_be_an_array, key));
}
}
}
@@ -2080,7 +2080,7 @@ namespace ts {
else if (firstExternalModuleSourceFile && languageVersion < ScriptTarget.ES6 && options.module === ModuleKind.None) {
// We cannot use createDiagnosticFromNode because nodes do not have parents yet
const span = getErrorSpanForNode(firstExternalModuleSourceFile, firstExternalModuleSourceFile.externalModuleIndicator);
programDiagnostics.add(createFileDiagnostic(firstExternalModuleSourceFile, span.start, span.length, Diagnostics.Cannot_compile_modules_unless_the_module_flag_is_provided_with_a_valid_module_type_Consider_setting_the_module_compiler_option_in_a_tsconfig_json_file));
programDiagnostics.add(createFileDiagnostic(firstExternalModuleSourceFile, span.start, span.length, Diagnostics.Cannot_use_imports_exports_or_module_augmentations_when_module_is_none));
}
// Cannot specify module gen target of es6 when below es6
@@ -2089,8 +2089,14 @@ namespace ts {
}
// Cannot specify module gen that isn't amd or system with --out
if (outFile && options.module && !(options.module === ModuleKind.AMD || options.module === ModuleKind.System)) {
programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Only_amd_and_system_modules_are_supported_alongside_0, options.out ? "out" : "outFile"));
if (outFile) {
if (options.module && !(options.module === ModuleKind.AMD || options.module === ModuleKind.System)) {
programDiagnostics.add(createCompilerDiagnostic(Diagnostics.Only_amd_and_system_modules_are_supported_alongside_0, options.out ? "out" : "outFile"));
}
else if (options.module === undefined && firstExternalModuleSourceFile) {
const span = getErrorSpanForNode(firstExternalModuleSourceFile, firstExternalModuleSourceFile.externalModuleIndicator);
programDiagnostics.add(createFileDiagnostic(firstExternalModuleSourceFile, span.start, span.length, Diagnostics.Cannot_compile_modules_using_option_0_unless_the_module_flag_is_amd_or_system, options.out ? "out" : "outFile"));
}
}
// there has to be common source directory if user specified --outdir || --sourceRoot

View File

@@ -1542,68 +1542,74 @@ namespace ts {
export const unknown = "";
export const warning = "warning";
// predefined type (void) or keyword (class)
/** predefined type (void) or keyword (class) */
export const keyword = "keyword";
// top level script node
/** top level script node */
export const scriptElement = "script";
// module foo {}
/** module foo {} */
export const moduleElement = "module";
// class X {}
/** class X {} */
export const classElement = "class";
// var x = class X {}
/** var x = class X {} */
export const localClassElement = "local class";
// interface Y {}
/** interface Y {} */
export const interfaceElement = "interface";
// type T = ...
/** type T = ... */
export const typeElement = "type";
// enum E
/** enum E */
export const enumElement = "enum";
// Inside module and script only
// const v = ..
/**
* Inside module and script only
* const v = ..
*/
export const variableElement = "var";
// Inside function
/** Inside function */
export const localVariableElement = "local var";
// Inside module and script only
// function f() { }
/**
* Inside module and script only
* function f() { }
*/
export const functionElement = "function";
// Inside function
/** Inside function */
export const localFunctionElement = "local function";
// class X { [public|private]* foo() {} }
/** class X { [public|private]* foo() {} } */
export const memberFunctionElement = "method";
// class X { [public|private]* [get|set] foo:number; }
/** class X { [public|private]* [get|set] foo:number; } */
export const memberGetAccessorElement = "getter";
export const memberSetAccessorElement = "setter";
// class X { [public|private]* foo:number; }
// interface Y { foo:number; }
/**
* class X { [public|private]* foo:number; }
* interface Y { foo:number; }
*/
export const memberVariableElement = "property";
// class X { constructor() { } }
/** class X { constructor() { } } */
export const constructorImplementationElement = "constructor";
// interface Y { ():number; }
/** interface Y { ():number; } */
export const callSignatureElement = "call";
// interface Y { []:number; }
/** interface Y { []:number; } */
export const indexSignatureElement = "index";
// interface Y { new():Y; }
/** interface Y { new():Y; } */
export const constructSignatureElement = "construct";
// function foo(*Y*: string)
/** function foo(*Y*: string) */
export const parameterElement = "parameter";
export const typeParameterElement = "type parameter";
@@ -4946,8 +4952,7 @@ namespace ts {
function getDocumentHighlights(fileName: string, position: number, filesToSearch: string[]): DocumentHighlights[] {
synchronizeHostData();
filesToSearch = map(filesToSearch, normalizeSlashes);
const sourceFilesToSearch = filter(program.getSourceFiles(), f => contains(filesToSearch, f.fileName));
const sourceFilesToSearch = map(filesToSearch, f => program.getSourceFile(f));
const sourceFile = getValidSourceFile(fileName);
const node = getTouchingWord(sourceFile, position);

View File

@@ -1,11 +1,14 @@
error TS5053: Option 'out' cannot be specified with option 'isolatedModules'.
tests/cases/compiler/file1.ts(2,1): error TS6131: Cannot compile modules using option 'out' unless the '--module' flag is 'amd' or 'system'.
tests/cases/compiler/file2.ts(1,1): error TS1208: Cannot compile namespaces when the '--isolatedModules' flag is provided.
!!! error TS5053: Option 'out' cannot be specified with option 'isolatedModules'.
==== tests/cases/compiler/file1.ts (0 errors) ====
==== tests/cases/compiler/file1.ts (1 errors) ====
export var x;
~~~~~~~~~~~~~
!!! error TS6131: Cannot compile modules using option 'out' unless the '--module' flag is 'amd' or 'system'.
==== tests/cases/compiler/file2.ts (1 errors) ====
var y;
~~~

View File

@@ -1,10 +1,10 @@
tests/cases/compiler/a.ts(1,14): error TS1148: Cannot compile modules unless the '--module' flag is provided with a valid module type. Consider setting the 'module' compiler option in a 'tsconfig.json' file.
tests/cases/compiler/a.ts(1,14): error TS1148: Cannot use imports, exports, or module augmentations when '--module' is 'none'.
==== tests/cases/compiler/a.ts (1 errors) ====
export class Foo {
~~~
!!! error TS1148: Cannot compile modules unless the '--module' flag is provided with a valid module type. Consider setting the 'module' compiler option in a 'tsconfig.json' file.
!!! error TS1148: Cannot use imports, exports, or module augmentations when '--module' is 'none'.
foo: string;
}

View File

@@ -0,0 +1,11 @@
tests/cases/compiler/a.ts(2,14): error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'.
==== tests/cases/compiler/a.ts (1 errors) ====
export class A { } // module
~
!!! error TS6131: Cannot compile modules using option 'outFile' unless the '--module' flag is 'amd' or 'system'.
==== tests/cases/compiler/b.ts (0 errors) ====
var x = 0; // global

View File

@@ -0,0 +1,11 @@
//// [tests/cases/compiler/outModuleConcatUnspecifiedModuleKind.ts] ////
//// [a.ts]
export class A { } // module
//// [b.ts]
var x = 0; // global
//// [out.js]
var x = 0; // global

View File

@@ -1,6 +1,6 @@
error TS5063: Substututions for pattern '*' should be an array.
error TS5063: Substitutions for pattern '*' should be an array.
!!! error TS5063: Substututions for pattern '*' should be an array.
!!! error TS5063: Substitutions for pattern '*' should be an array.
==== tests/cases/compiler/a.ts (0 errors) ====
let x = 1;

View File

@@ -562,9 +562,9 @@ class ListWrapper {
>ListWrapper : Symbol(ListWrapper, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 38, 1))
>l : Symbol(l, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 113, 43))
>T : Symbol(T, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 113, 16))
>JSON.stringify : Symbol(JSON.stringify, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --))
>JSON.stringify : Symbol(JSON.stringify, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --))
>JSON : Symbol(JSON, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --))
>stringify : Symbol(JSON.stringify, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --))
>stringify : Symbol(JSON.stringify, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --))
>l : Symbol(l, Decl(staticAnonymousTypeNotReferencingTypeParameter.ts, 113, 43))
static maximum<T>(dit: typeof ListWrapper, list: T[], predicate: (t: T) => number): T {

View File

@@ -662,9 +662,9 @@ class ListWrapper {
>l : T[]
>T : T
>JSON.stringify(l) : string
>JSON.stringify : { (value: any): string; (value: any, replacer: (key: string, value: any) => any): string; (value: any, replacer: any[]): string; (value: any, replacer: (key: string, value: any) => any, space: string | number): string; (value: any, replacer: any[], space: string | number): string; }
>JSON.stringify : { (value: any, replacer?: (key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[], space?: string | number): string; }
>JSON : JSON
>stringify : { (value: any): string; (value: any, replacer: (key: string, value: any) => any): string; (value: any, replacer: any[]): string; (value: any, replacer: (key: string, value: any) => any, space: string | number): string; (value: any, replacer: any[], space: string | number): string; }
>stringify : { (value: any, replacer?: (key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (number | string)[], space?: string | number): string; }
>l : T[]
static maximum<T>(dit: typeof ListWrapper, list: T[], predicate: (t: T) => number): T {

View File

@@ -0,0 +1,18 @@
/mod1.ts(2,17): error TS6131: Cannot compile modules using option 'out' unless the '--module' flag is 'amd' or 'system'.
==== /mod2.ts (0 errors) ====
import {foo} from "./mod1";
export const bar = foo();
==== /types/lib/index.d.ts (0 errors) ====
interface Lib { x }
==== /mod1.ts (1 errors) ====
export function foo(): Lib { return {x: 1} }
~~~
!!! error TS6131: Cannot compile modules using option 'out' unless the '--module' flag is 'amd' or 'system'.

View File

@@ -1,23 +0,0 @@
=== /mod2.ts ===
import {foo} from "./mod1";
>foo : Symbol(foo, Decl(mod2.ts, 1, 8))
export const bar = foo();
>bar : Symbol(bar, Decl(mod2.ts, 2, 12))
>foo : Symbol(foo, Decl(mod2.ts, 1, 8))
=== /types/lib/index.d.ts ===
interface Lib { x }
>Lib : Symbol(Lib, Decl(index.d.ts, 0, 0))
>x : Symbol(Lib.x, Decl(index.d.ts, 2, 15))
=== /mod1.ts ===
export function foo(): Lib { return {x: 1} }
>foo : Symbol(foo, Decl(mod1.ts, 0, 0))
>Lib : Symbol(Lib, Decl(index.d.ts, 0, 0))
>x : Symbol(x, Decl(mod1.ts, 1, 37))

View File

@@ -1,26 +0,0 @@
=== /mod2.ts ===
import {foo} from "./mod1";
>foo : () => Lib
export const bar = foo();
>bar : Lib
>foo() : Lib
>foo : () => Lib
=== /types/lib/index.d.ts ===
interface Lib { x }
>Lib : Lib
>x : any
=== /mod1.ts ===
export function foo(): Lib { return {x: 1} }
>foo : () => Lib
>Lib : Lib
>{x: 1} : { x: number; }
>x : number
>1 : number

View File

@@ -0,0 +1,37 @@
/main.ts(1,14): error TS6131: Cannot compile modules using option 'out' unless the '--module' flag is 'amd' or 'system'.
==== /mod2.ts (0 errors) ====
import { Cls } from "./main";
import "./mod1";
export const cls = Cls;
export const foo = new Cls().foo();
export const bar = Cls.bar();
==== /types/lib/index.d.ts (0 errors) ====
interface Lib { x }
==== /main.ts (1 errors) ====
export class Cls {
~~~
!!! error TS6131: Cannot compile modules using option 'out' unless the '--module' flag is 'amd' or 'system'.
x
}
==== /mod1.ts (0 errors) ====
/// <reference types="lib" />
import {Cls} from "./main";
Cls.prototype.foo = function() { return undefined; }
declare module "./main" {
interface Cls {
foo(): Lib;
}
namespace Cls {
function bar(): Lib;
}
}

View File

@@ -1,68 +0,0 @@
=== /mod2.ts ===
import { Cls } from "./main";
>Cls : Symbol(Cls, Decl(mod2.ts, 0, 8))
import "./mod1";
export const cls = Cls;
>cls : Symbol(cls, Decl(mod2.ts, 3, 12))
>Cls : Symbol(Cls, Decl(mod2.ts, 0, 8))
export const foo = new Cls().foo();
>foo : Symbol(foo, Decl(mod2.ts, 4, 12))
>new Cls().foo : Symbol(Cls.foo, Decl(mod1.ts, 6, 19))
>Cls : Symbol(Cls, Decl(mod2.ts, 0, 8))
>foo : Symbol(Cls.foo, Decl(mod1.ts, 6, 19))
export const bar = Cls.bar();
>bar : Symbol(bar, Decl(mod2.ts, 5, 12))
>Cls.bar : Symbol(Cls.bar, Decl(mod1.ts, 9, 19))
>Cls : Symbol(Cls, Decl(mod2.ts, 0, 8))
>bar : Symbol(Cls.bar, Decl(mod1.ts, 9, 19))
=== /types/lib/index.d.ts ===
interface Lib { x }
>Lib : Symbol(Lib, Decl(index.d.ts, 0, 0))
>x : Symbol(Lib.x, Decl(index.d.ts, 2, 15))
=== /main.ts ===
export class Cls {
>Cls : Symbol(Cls, Decl(main.ts, 0, 0), Decl(mod1.ts, 5, 25), Decl(mod1.ts, 8, 5))
x
>x : Symbol(Cls.x, Decl(main.ts, 0, 18))
}
=== /mod1.ts ===
/// <reference types="lib" />
import {Cls} from "./main";
>Cls : Symbol(Cls, Decl(mod1.ts, 2, 8))
Cls.prototype.foo = function() { return undefined; }
>Cls.prototype.foo : Symbol(Cls.foo, Decl(mod1.ts, 6, 19))
>Cls.prototype : Symbol(Cls.prototype)
>Cls : Symbol(Cls, Decl(mod1.ts, 2, 8))
>prototype : Symbol(Cls.prototype)
>foo : Symbol(Cls.foo, Decl(mod1.ts, 6, 19))
>undefined : Symbol(undefined)
declare module "./main" {
interface Cls {
>Cls : Symbol(Cls, Decl(main.ts, 0, 0), Decl(mod1.ts, 5, 25), Decl(mod1.ts, 8, 5))
foo(): Lib;
>foo : Symbol(Cls.foo, Decl(mod1.ts, 6, 19))
>Lib : Symbol(Lib, Decl(index.d.ts, 0, 0))
}
namespace Cls {
>Cls : Symbol(Cls, Decl(main.ts, 0, 0), Decl(mod1.ts, 5, 25), Decl(mod1.ts, 8, 5))
function bar(): Lib;
>bar : Symbol(bar, Decl(mod1.ts, 9, 19))
>Lib : Symbol(Lib, Decl(index.d.ts, 0, 0))
}
}

View File

@@ -1,73 +0,0 @@
=== /mod2.ts ===
import { Cls } from "./main";
>Cls : typeof Cls
import "./mod1";
export const cls = Cls;
>cls : typeof Cls
>Cls : typeof Cls
export const foo = new Cls().foo();
>foo : Lib
>new Cls().foo() : Lib
>new Cls().foo : () => Lib
>new Cls() : Cls
>Cls : typeof Cls
>foo : () => Lib
export const bar = Cls.bar();
>bar : Lib
>Cls.bar() : Lib
>Cls.bar : () => Lib
>Cls : typeof Cls
>bar : () => Lib
=== /types/lib/index.d.ts ===
interface Lib { x }
>Lib : Lib
>x : any
=== /main.ts ===
export class Cls {
>Cls : Cls
x
>x : any
}
=== /mod1.ts ===
/// <reference types="lib" />
import {Cls} from "./main";
>Cls : typeof Cls
Cls.prototype.foo = function() { return undefined; }
>Cls.prototype.foo = function() { return undefined; } : () => any
>Cls.prototype.foo : () => Lib
>Cls.prototype : Cls
>Cls : typeof Cls
>prototype : Cls
>foo : () => Lib
>function() { return undefined; } : () => any
>undefined : undefined
declare module "./main" {
interface Cls {
>Cls : Cls
foo(): Lib;
>foo : () => Lib
>Lib : Lib
}
namespace Cls {
>Cls : typeof Cls
function bar(): Lib;
>bar : () => Lib
>Lib : Lib
}
}

View File

@@ -0,0 +1,8 @@
// @target: ES5
// @outFile: out.js
// @Filename: a.ts
export class A { } // module
// @Filename: b.ts
var x = 0; // global