diff --git a/Gulpfile.ts b/Gulpfile.ts index fd353083433..a75882c5f46 100644 --- a/Gulpfile.ts +++ b/Gulpfile.ts @@ -138,6 +138,7 @@ const es2017LibrarySource = [ "es2017.sharedmemory.d.ts", "es2017.string.d.ts", "es2017.intl.d.ts", + "es2017.typedarrays.d.ts", ]; const es2017LibrarySourceMap = es2017LibrarySource.map(source => diff --git a/Jakefile.js b/Jakefile.js index 7f0915ad7e9..89fcb6500dd 100644 --- a/Jakefile.js +++ b/Jakefile.js @@ -197,7 +197,8 @@ var es2017LibrarySource = [ "es2017.object.d.ts", "es2017.sharedmemory.d.ts", "es2017.string.d.ts", - "es2017.intl.d.ts" + "es2017.intl.d.ts", + "es2017.typedarrays.d.ts", ]; var es2017LibrarySourceMap = es2017LibrarySource.map(function (source) { diff --git a/src/compiler/commandLineParser.ts b/src/compiler/commandLineParser.ts index b7003fbffd9..7ba9bd80843 100644 --- a/src/compiler/commandLineParser.ts +++ b/src/compiler/commandLineParser.ts @@ -141,6 +141,7 @@ namespace ts { "es2017.sharedmemory": "lib.es2017.sharedmemory.d.ts", "es2017.string": "lib.es2017.string.d.ts", "es2017.intl": "lib.es2017.intl.d.ts", + "es2017.typedarrays": "lib.es2017.typedarrays.d.ts", "esnext.asynciterable": "lib.esnext.asynciterable.d.ts", }), }, diff --git a/src/harness/unittests/commandLineParsing.ts b/src/harness/unittests/commandLineParsing.ts index 01a208aa330..18e867cb9ea 100644 --- a/src/harness/unittests/commandLineParsing.ts +++ b/src/harness/unittests/commandLineParsing.ts @@ -60,7 +60,7 @@ namespace ts { assertParseResult(["--lib", "es5,invalidOption", "0.ts"], { errors: [{ - messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'esnext.asynciterable'.", + messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'es2017.typedarrays', 'esnext.asynciterable'.", category: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.category, code: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.code, @@ -263,7 +263,7 @@ namespace ts { assertParseResult(["--lib", "es5,", "es7", "0.ts"], { errors: [{ - messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'esnext.asynciterable'.", + messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'es2017.typedarrays', 'esnext.asynciterable'.", category: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.category, code: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.code, @@ -283,7 +283,7 @@ namespace ts { assertParseResult(["--lib", "es5, ", "es7", "0.ts"], { errors: [{ - messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'esnext.asynciterable'.", + messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'es2017.typedarrays', 'esnext.asynciterable'.", category: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.category, code: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.code, diff --git a/src/harness/unittests/convertCompilerOptionsFromJson.ts b/src/harness/unittests/convertCompilerOptionsFromJson.ts index 09659762288..cbbe41ceadf 100644 --- a/src/harness/unittests/convertCompilerOptionsFromJson.ts +++ b/src/harness/unittests/convertCompilerOptionsFromJson.ts @@ -266,7 +266,7 @@ namespace ts { file: undefined, start: 0, length: 0, - messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'esnext.asynciterable'.", + messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'es2017.typedarrays', 'esnext.asynciterable'.", code: Diagnostics.Argument_for_0_option_must_be_Colon_1.code, category: Diagnostics.Argument_for_0_option_must_be_Colon_1.category }] @@ -297,7 +297,7 @@ namespace ts { file: undefined, start: 0, length: 0, - messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'esnext.asynciterable'.", + messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'es2017.typedarrays', 'esnext.asynciterable'.", code: Diagnostics.Argument_for_0_option_must_be_Colon_1.code, category: Diagnostics.Argument_for_0_option_must_be_Colon_1.category }] @@ -328,7 +328,7 @@ namespace ts { file: undefined, start: 0, length: 0, - messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'esnext.asynciterable'.", + messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'es2017.typedarrays', 'esnext.asynciterable'.", code: Diagnostics.Argument_for_0_option_must_be_Colon_1.code, category: Diagnostics.Argument_for_0_option_must_be_Colon_1.category }] @@ -359,7 +359,7 @@ namespace ts { file: undefined, start: 0, length: 0, - messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'esnext.asynciterable'.", + messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'esnext', 'dom', 'dom.iterable', 'webworker', 'scripthost', 'es2015.core', 'es2015.collection', 'es2015.generator', 'es2015.iterable', 'es2015.promise', 'es2015.proxy', 'es2015.reflect', 'es2015.symbol', 'es2015.symbol.wellknown', 'es2016.array.include', 'es2017.object', 'es2017.sharedmemory', 'es2017.string', 'es2017.intl', 'es2017.typedarrays', 'esnext.asynciterable'.", code: Diagnostics.Argument_for_0_option_must_be_Colon_1.code, category: Diagnostics.Argument_for_0_option_must_be_Colon_1.category }] diff --git a/src/lib/es2017.d.ts b/src/lib/es2017.d.ts index 80282355a45..87aa273140b 100644 --- a/src/lib/es2017.d.ts +++ b/src/lib/es2017.d.ts @@ -3,3 +3,4 @@ /// /// /// +/// diff --git a/src/lib/es2017.typedarrays.d.ts b/src/lib/es2017.typedarrays.d.ts new file mode 100644 index 00000000000..a0b64135a30 --- /dev/null +++ b/src/lib/es2017.typedarrays.d.ts @@ -0,0 +1,35 @@ +interface Int8ArrayConstructor { + new (): Int8Array; +} + +interface Uint8ArrayConstructor { + new (): Uint8Array; +} + +interface Uint8ClampedArrayConstructor { + new (): Uint8ClampedArray; +} + +interface Int16ArrayConstructor { + new (): Int16Array; +} + +interface Uint16ArrayConstructor { + new (): Uint16Array; +} + +interface Int32ArrayConstructor { + new (): Int32Array; +} + +interface Uint32ArrayConstructor { + new (): Uint32Array; +} + +interface Float32ArrayConstructor { + new (): Float32Array; +} + +interface Float64ArrayConstructor { + new (): Float64Array; +} diff --git a/tests/baselines/reference/useTypedArrays1.js b/tests/baselines/reference/useTypedArrays1.js new file mode 100644 index 00000000000..bbfcccec836 --- /dev/null +++ b/tests/baselines/reference/useTypedArrays1.js @@ -0,0 +1,22 @@ +//// [useTypedArrays1.ts] +var int8Array = new Int8Array(); +var uint8Array = new Uint8Array(); +var uint8ClampedArray = new Uint8ClampedArray(); +var int16Array = new Int16Array(); +var uint16Array = new Uint16Array(); +var int32Array = new Int32Array(); +var uint32Array = new Uint32Array(); +var float32Array = new Float32Array(); +var float64Array = new Float64Array(); + + +//// [useTypedArrays1.js] +var int8Array = new Int8Array(); +var uint8Array = new Uint8Array(); +var uint8ClampedArray = new Uint8ClampedArray(); +var int16Array = new Int16Array(); +var uint16Array = new Uint16Array(); +var int32Array = new Int32Array(); +var uint32Array = new Uint32Array(); +var float32Array = new Float32Array(); +var float64Array = new Float64Array(); diff --git a/tests/baselines/reference/useTypedArrays1.symbols b/tests/baselines/reference/useTypedArrays1.symbols new file mode 100644 index 00000000000..ed41b0c24bd --- /dev/null +++ b/tests/baselines/reference/useTypedArrays1.symbols @@ -0,0 +1,37 @@ +=== tests/cases/conformance/es2017/useTypedArrays1.ts === +var int8Array = new Int8Array(); +>int8Array : Symbol(int8Array, Decl(useTypedArrays1.ts, 0, 3)) +>Int8Array : Symbol(Int8Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) + +var uint8Array = new Uint8Array(); +>uint8Array : Symbol(uint8Array, Decl(useTypedArrays1.ts, 1, 3)) +>Uint8Array : Symbol(Uint8Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) + +var uint8ClampedArray = new Uint8ClampedArray(); +>uint8ClampedArray : Symbol(uint8ClampedArray, Decl(useTypedArrays1.ts, 2, 3)) +>Uint8ClampedArray : Symbol(Uint8ClampedArray, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) + +var int16Array = new Int16Array(); +>int16Array : Symbol(int16Array, Decl(useTypedArrays1.ts, 3, 3)) +>Int16Array : Symbol(Int16Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) + +var uint16Array = new Uint16Array(); +>uint16Array : Symbol(uint16Array, Decl(useTypedArrays1.ts, 4, 3)) +>Uint16Array : Symbol(Uint16Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) + +var int32Array = new Int32Array(); +>int32Array : Symbol(int32Array, Decl(useTypedArrays1.ts, 5, 3)) +>Int32Array : Symbol(Int32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) + +var uint32Array = new Uint32Array(); +>uint32Array : Symbol(uint32Array, Decl(useTypedArrays1.ts, 6, 3)) +>Uint32Array : Symbol(Uint32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) + +var float32Array = new Float32Array(); +>float32Array : Symbol(float32Array, Decl(useTypedArrays1.ts, 7, 3)) +>Float32Array : Symbol(Float32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) + +var float64Array = new Float64Array(); +>float64Array : Symbol(float64Array, Decl(useTypedArrays1.ts, 8, 3)) +>Float64Array : Symbol(Float64Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) + diff --git a/tests/baselines/reference/useTypedArrays1.types b/tests/baselines/reference/useTypedArrays1.types new file mode 100644 index 00000000000..f3f27383a3e --- /dev/null +++ b/tests/baselines/reference/useTypedArrays1.types @@ -0,0 +1,46 @@ +=== tests/cases/conformance/es2017/useTypedArrays1.ts === +var int8Array = new Int8Array(); +>int8Array : Int8Array +>new Int8Array() : Int8Array +>Int8Array : Int8ArrayConstructor + +var uint8Array = new Uint8Array(); +>uint8Array : Uint8Array +>new Uint8Array() : Uint8Array +>Uint8Array : Uint8ArrayConstructor + +var uint8ClampedArray = new Uint8ClampedArray(); +>uint8ClampedArray : Uint8ClampedArray +>new Uint8ClampedArray() : Uint8ClampedArray +>Uint8ClampedArray : Uint8ClampedArrayConstructor + +var int16Array = new Int16Array(); +>int16Array : Int16Array +>new Int16Array() : Int16Array +>Int16Array : Int16ArrayConstructor + +var uint16Array = new Uint16Array(); +>uint16Array : Uint16Array +>new Uint16Array() : Uint16Array +>Uint16Array : Uint16ArrayConstructor + +var int32Array = new Int32Array(); +>int32Array : Int32Array +>new Int32Array() : Int32Array +>Int32Array : Int32ArrayConstructor + +var uint32Array = new Uint32Array(); +>uint32Array : Uint32Array +>new Uint32Array() : Uint32Array +>Uint32Array : Uint32ArrayConstructor + +var float32Array = new Float32Array(); +>float32Array : Float32Array +>new Float32Array() : Float32Array +>Float32Array : Float32ArrayConstructor + +var float64Array = new Float64Array(); +>float64Array : Float64Array +>new Float64Array() : Float64Array +>Float64Array : Float64ArrayConstructor + diff --git a/tests/cases/conformance/es2017/useTypedArrays1.ts b/tests/cases/conformance/es2017/useTypedArrays1.ts new file mode 100644 index 00000000000..e06bf91f317 --- /dev/null +++ b/tests/cases/conformance/es2017/useTypedArrays1.ts @@ -0,0 +1,12 @@ +// @target: es5 +// @lib: es5,es2017.typedarrays + +var int8Array = new Int8Array(); +var uint8Array = new Uint8Array(); +var uint8ClampedArray = new Uint8ClampedArray(); +var int16Array = new Int16Array(); +var uint16Array = new Uint16Array(); +var int32Array = new Int32Array(); +var uint32Array = new Uint32Array(); +var float32Array = new Float32Array(); +var float64Array = new Float64Array();