diff --git a/Jakefile.js b/Jakefile.js
index d36d9a6857a..3540655af4a 100644
--- a/Jakefile.js
+++ b/Jakefile.js
@@ -188,7 +188,10 @@ var es2016LibrarySourceMap = es2016LibrarySource.map(function (source) {
return { target: "lib." + source, sources: ["header.d.ts", source] };
});
-var es2017LibrarySource = ["es2017.object.d.ts"];
+var es2017LibrarySource = [
+ "es2017.object.d.ts",
+ "es2017.sharedmemory.d.ts"
+];
var es2017LibrarySourceMap = es2017LibrarySource.map(function (source) {
return { target: "lib." + source, sources: ["header.d.ts", source] };
diff --git a/src/compiler/commandLineParser.ts b/src/compiler/commandLineParser.ts
index 8fc74b3a3b6..7be050ccef5 100644
--- a/src/compiler/commandLineParser.ts
+++ b/src/compiler/commandLineParser.ts
@@ -401,7 +401,8 @@ namespace ts {
"es2015.symbol": "lib.es2015.symbol.d.ts",
"es2015.symbol.wellknown": "lib.es2015.symbol.wellknown.d.ts",
"es2016.array.include": "lib.es2016.array.include.d.ts",
- "es2017.object": "lib.es2017.object.d.ts"
+ "es2017.object": "lib.es2017.object.d.ts",
+ "es2017.sharedmemory": "lib.es2017.sharedmemory.d.ts"
},
},
description: Diagnostics.Specify_library_files_to_be_included_in_the_compilation_Colon
diff --git a/src/lib/es2017.d.ts b/src/lib/es2017.d.ts
index aad5ff4d2ce..13f9d93f444 100644
--- a/src/lib/es2017.d.ts
+++ b/src/lib/es2017.d.ts
@@ -1,2 +1,3 @@
///
-///
\ No newline at end of file
+///
+///
\ No newline at end of file
diff --git a/src/lib/es2017.sharedmemory.d.ts b/src/lib/es2017.sharedmemory.d.ts
new file mode 100644
index 00000000000..440b74ff016
--- /dev/null
+++ b/src/lib/es2017.sharedmemory.d.ts
@@ -0,0 +1,27 @@
+///
+///
+
+interface SharedArrayBuffer {
+ /**
+ * Read-only. The length of the ArrayBuffer (in bytes).
+ */
+ readonly byteLength: number;
+
+ /*
+ * The SharedArrayBuffer constructor's length property whose value is 1.
+ */
+ length: number;
+ /**
+ * Returns a section of an SharedArrayBuffer.
+ */
+ slice(begin:number, end?:number): SharedArrayBuffer;
+ readonly [Symbol.species]: SharedArrayBuffer;
+ readonly [Symbol.toStringTag]: "SharedArrayBuffer";
+}
+
+interface SharedArrayBufferConstructor {
+ readonly prototype: SharedArrayBuffer;
+ new (byteLength: number): SharedArrayBuffer;
+}
+
+declare var SharedArrayBuffer: SharedArrayBufferConstructor;
\ No newline at end of file
diff --git a/tests/baselines/reference/useSharedArrayBuffer1.js b/tests/baselines/reference/useSharedArrayBuffer1.js
new file mode 100644
index 00000000000..d607095f115
--- /dev/null
+++ b/tests/baselines/reference/useSharedArrayBuffer1.js
@@ -0,0 +1,10 @@
+//// [useSharedArrayBuffer1.ts]
+
+var foge = new SharedArrayBuffer(1024);
+var bar = foge.slice(1, 10);
+var len = foge.byteLength;
+
+//// [useSharedArrayBuffer1.js]
+var foge = new SharedArrayBuffer(1024);
+var bar = foge.slice(1, 10);
+var len = foge.byteLength;
diff --git a/tests/baselines/reference/useSharedArrayBuffer1.symbols b/tests/baselines/reference/useSharedArrayBuffer1.symbols
new file mode 100644
index 00000000000..cc5a9a5e199
--- /dev/null
+++ b/tests/baselines/reference/useSharedArrayBuffer1.symbols
@@ -0,0 +1,18 @@
+=== tests/cases/conformance/es2017/useSharedArrayBuffer1.ts ===
+
+var foge = new SharedArrayBuffer(1024);
+>foge : Symbol(foge, Decl(useSharedArrayBuffer1.ts, 1, 3))
+>SharedArrayBuffer : Symbol(SharedArrayBuffer, Decl(lib.es2017.sharedmemory.d.ts, --, --), Decl(lib.es2017.sharedmemory.d.ts, --, --))
+
+var bar = foge.slice(1, 10);
+>bar : Symbol(bar, Decl(useSharedArrayBuffer1.ts, 2, 3))
+>foge.slice : Symbol(SharedArrayBuffer.slice, Decl(lib.es2017.sharedmemory.d.ts, --, --))
+>foge : Symbol(foge, Decl(useSharedArrayBuffer1.ts, 1, 3))
+>slice : Symbol(SharedArrayBuffer.slice, Decl(lib.es2017.sharedmemory.d.ts, --, --))
+
+var len = foge.byteLength;
+>len : Symbol(len, Decl(useSharedArrayBuffer1.ts, 3, 3))
+>foge.byteLength : Symbol(SharedArrayBuffer.byteLength, Decl(lib.es2017.sharedmemory.d.ts, --, --))
+>foge : Symbol(foge, Decl(useSharedArrayBuffer1.ts, 1, 3))
+>byteLength : Symbol(SharedArrayBuffer.byteLength, Decl(lib.es2017.sharedmemory.d.ts, --, --))
+
diff --git a/tests/baselines/reference/useSharedArrayBuffer1.types b/tests/baselines/reference/useSharedArrayBuffer1.types
new file mode 100644
index 00000000000..95ef3df11de
--- /dev/null
+++ b/tests/baselines/reference/useSharedArrayBuffer1.types
@@ -0,0 +1,23 @@
+=== tests/cases/conformance/es2017/useSharedArrayBuffer1.ts ===
+
+var foge = new SharedArrayBuffer(1024);
+>foge : SharedArrayBuffer
+>new SharedArrayBuffer(1024) : SharedArrayBuffer
+>SharedArrayBuffer : SharedArrayBufferConstructor
+>1024 : number
+
+var bar = foge.slice(1, 10);
+>bar : SharedArrayBuffer
+>foge.slice(1, 10) : SharedArrayBuffer
+>foge.slice : (begin: number, end?: number) => SharedArrayBuffer
+>foge : SharedArrayBuffer
+>slice : (begin: number, end?: number) => SharedArrayBuffer
+>1 : number
+>10 : number
+
+var len = foge.byteLength;
+>len : number
+>foge.byteLength : number
+>foge : SharedArrayBuffer
+>byteLength : number
+
diff --git a/tests/baselines/reference/useSharedArrayBuffer2.errors.txt b/tests/baselines/reference/useSharedArrayBuffer2.errors.txt
new file mode 100644
index 00000000000..c5eb85dcbba
--- /dev/null
+++ b/tests/baselines/reference/useSharedArrayBuffer2.errors.txt
@@ -0,0 +1,10 @@
+tests/cases/conformance/es2017/useSharedArrayBuffer2.ts(2,16): error TS2304: Cannot find name 'SharedArrayBuffer'.
+
+
+==== tests/cases/conformance/es2017/useSharedArrayBuffer2.ts (1 errors) ====
+
+ var foge = new SharedArrayBuffer(1024);
+ ~~~~~~~~~~~~~~~~~
+!!! error TS2304: Cannot find name 'SharedArrayBuffer'.
+ var bar = foge.slice(1, 10);
+ var len = foge.byteLength;
\ No newline at end of file
diff --git a/tests/baselines/reference/useSharedArrayBuffer2.js b/tests/baselines/reference/useSharedArrayBuffer2.js
new file mode 100644
index 00000000000..ed67d837c79
--- /dev/null
+++ b/tests/baselines/reference/useSharedArrayBuffer2.js
@@ -0,0 +1,10 @@
+//// [useSharedArrayBuffer2.ts]
+
+var foge = new SharedArrayBuffer(1024);
+var bar = foge.slice(1, 10);
+var len = foge.byteLength;
+
+//// [useSharedArrayBuffer2.js]
+var foge = new SharedArrayBuffer(1024);
+var bar = foge.slice(1, 10);
+var len = foge.byteLength;
diff --git a/tests/baselines/reference/useSharedArrayBuffer3.errors.txt b/tests/baselines/reference/useSharedArrayBuffer3.errors.txt
new file mode 100644
index 00000000000..868bfe5a584
--- /dev/null
+++ b/tests/baselines/reference/useSharedArrayBuffer3.errors.txt
@@ -0,0 +1,10 @@
+tests/cases/conformance/es2017/useSharedArrayBuffer3.ts(2,16): error TS2304: Cannot find name 'SharedArrayBuffer'.
+
+
+==== tests/cases/conformance/es2017/useSharedArrayBuffer3.ts (1 errors) ====
+
+ var foge = new SharedArrayBuffer(1024);
+ ~~~~~~~~~~~~~~~~~
+!!! error TS2304: Cannot find name 'SharedArrayBuffer'.
+ var bar = foge.slice(1, 10);
+ var len = foge.byteLength;
\ No newline at end of file
diff --git a/tests/baselines/reference/useSharedArrayBuffer3.js b/tests/baselines/reference/useSharedArrayBuffer3.js
new file mode 100644
index 00000000000..b6e65e3bd66
--- /dev/null
+++ b/tests/baselines/reference/useSharedArrayBuffer3.js
@@ -0,0 +1,10 @@
+//// [useSharedArrayBuffer3.ts]
+
+var foge = new SharedArrayBuffer(1024);
+var bar = foge.slice(1, 10);
+var len = foge.byteLength;
+
+//// [useSharedArrayBuffer3.js]
+var foge = new SharedArrayBuffer(1024);
+var bar = foge.slice(1, 10);
+var len = foge.byteLength;
diff --git a/tests/baselines/reference/useSharedArrayBuffer4.js b/tests/baselines/reference/useSharedArrayBuffer4.js
new file mode 100644
index 00000000000..3bdc2bdd2e7
--- /dev/null
+++ b/tests/baselines/reference/useSharedArrayBuffer4.js
@@ -0,0 +1,14 @@
+//// [useSharedArrayBuffer4.ts]
+
+var foge = new SharedArrayBuffer(1024);
+var bar = foge.slice(1, 10);
+var species = foge[Symbol.species];
+var stringTag = foge[Symbol.toStringTag];
+var len = foge.byteLength;
+
+//// [useSharedArrayBuffer4.js]
+var foge = new SharedArrayBuffer(1024);
+var bar = foge.slice(1, 10);
+var species = foge[Symbol.species];
+var stringTag = foge[Symbol.toStringTag];
+var len = foge.byteLength;
diff --git a/tests/baselines/reference/useSharedArrayBuffer4.symbols b/tests/baselines/reference/useSharedArrayBuffer4.symbols
new file mode 100644
index 00000000000..7a8a2a167aa
--- /dev/null
+++ b/tests/baselines/reference/useSharedArrayBuffer4.symbols
@@ -0,0 +1,32 @@
+=== tests/cases/conformance/es2017/useSharedArrayBuffer4.ts ===
+
+var foge = new SharedArrayBuffer(1024);
+>foge : Symbol(foge, Decl(useSharedArrayBuffer4.ts, 1, 3))
+>SharedArrayBuffer : Symbol(SharedArrayBuffer, Decl(lib.es2017.sharedmemory.d.ts, --, --), Decl(lib.es2017.sharedmemory.d.ts, --, --))
+
+var bar = foge.slice(1, 10);
+>bar : Symbol(bar, Decl(useSharedArrayBuffer4.ts, 2, 3))
+>foge.slice : Symbol(SharedArrayBuffer.slice, Decl(lib.es2017.sharedmemory.d.ts, --, --))
+>foge : Symbol(foge, Decl(useSharedArrayBuffer4.ts, 1, 3))
+>slice : Symbol(SharedArrayBuffer.slice, Decl(lib.es2017.sharedmemory.d.ts, --, --))
+
+var species = foge[Symbol.species];
+>species : Symbol(species, Decl(useSharedArrayBuffer4.ts, 3, 3))
+>foge : Symbol(foge, Decl(useSharedArrayBuffer4.ts, 1, 3))
+>Symbol.species : Symbol(SymbolConstructor.species, Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
+>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --))
+>species : Symbol(SymbolConstructor.species, Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
+
+var stringTag = foge[Symbol.toStringTag];
+>stringTag : Symbol(stringTag, Decl(useSharedArrayBuffer4.ts, 4, 3))
+>foge : Symbol(foge, Decl(useSharedArrayBuffer4.ts, 1, 3))
+>Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
+>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --))
+>toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
+
+var len = foge.byteLength;
+>len : Symbol(len, Decl(useSharedArrayBuffer4.ts, 5, 3))
+>foge.byteLength : Symbol(SharedArrayBuffer.byteLength, Decl(lib.es2017.sharedmemory.d.ts, --, --))
+>foge : Symbol(foge, Decl(useSharedArrayBuffer4.ts, 1, 3))
+>byteLength : Symbol(SharedArrayBuffer.byteLength, Decl(lib.es2017.sharedmemory.d.ts, --, --))
+
diff --git a/tests/baselines/reference/useSharedArrayBuffer4.types b/tests/baselines/reference/useSharedArrayBuffer4.types
new file mode 100644
index 00000000000..e182cd654aa
--- /dev/null
+++ b/tests/baselines/reference/useSharedArrayBuffer4.types
@@ -0,0 +1,39 @@
+=== tests/cases/conformance/es2017/useSharedArrayBuffer4.ts ===
+
+var foge = new SharedArrayBuffer(1024);
+>foge : SharedArrayBuffer
+>new SharedArrayBuffer(1024) : SharedArrayBuffer
+>SharedArrayBuffer : SharedArrayBufferConstructor
+>1024 : number
+
+var bar = foge.slice(1, 10);
+>bar : SharedArrayBuffer
+>foge.slice(1, 10) : SharedArrayBuffer
+>foge.slice : (begin: number, end?: number) => SharedArrayBuffer
+>foge : SharedArrayBuffer
+>slice : (begin: number, end?: number) => SharedArrayBuffer
+>1 : number
+>10 : number
+
+var species = foge[Symbol.species];
+>species : SharedArrayBuffer
+>foge[Symbol.species] : SharedArrayBuffer
+>foge : SharedArrayBuffer
+>Symbol.species : symbol
+>Symbol : SymbolConstructor
+>species : symbol
+
+var stringTag = foge[Symbol.toStringTag];
+>stringTag : "SharedArrayBuffer"
+>foge[Symbol.toStringTag] : "SharedArrayBuffer"
+>foge : SharedArrayBuffer
+>Symbol.toStringTag : symbol
+>Symbol : SymbolConstructor
+>toStringTag : symbol
+
+var len = foge.byteLength;
+>len : number
+>foge.byteLength : number
+>foge : SharedArrayBuffer
+>byteLength : number
+
diff --git a/tests/baselines/reference/useSharedArrayBuffer5.js b/tests/baselines/reference/useSharedArrayBuffer5.js
new file mode 100644
index 00000000000..df8da8850d3
--- /dev/null
+++ b/tests/baselines/reference/useSharedArrayBuffer5.js
@@ -0,0 +1,10 @@
+//// [useSharedArrayBuffer5.ts]
+
+var foge = new SharedArrayBuffer(1024);
+var species = foge[Symbol.species];
+var stringTag = foge[Symbol.toStringTag];
+
+//// [useSharedArrayBuffer5.js]
+var foge = new SharedArrayBuffer(1024);
+var species = foge[Symbol.species];
+var stringTag = foge[Symbol.toStringTag];
diff --git a/tests/baselines/reference/useSharedArrayBuffer5.symbols b/tests/baselines/reference/useSharedArrayBuffer5.symbols
new file mode 100644
index 00000000000..a6eab16ac6a
--- /dev/null
+++ b/tests/baselines/reference/useSharedArrayBuffer5.symbols
@@ -0,0 +1,20 @@
+=== tests/cases/conformance/es2017/useSharedArrayBuffer5.ts ===
+
+var foge = new SharedArrayBuffer(1024);
+>foge : Symbol(foge, Decl(useSharedArrayBuffer5.ts, 1, 3))
+>SharedArrayBuffer : Symbol(SharedArrayBuffer, Decl(lib.es2017.sharedmemory.d.ts, --, --), Decl(lib.es2017.sharedmemory.d.ts, --, --))
+
+var species = foge[Symbol.species];
+>species : Symbol(species, Decl(useSharedArrayBuffer5.ts, 2, 3))
+>foge : Symbol(foge, Decl(useSharedArrayBuffer5.ts, 1, 3))
+>Symbol.species : Symbol(SymbolConstructor.species, Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
+>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --))
+>species : Symbol(SymbolConstructor.species, Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
+
+var stringTag = foge[Symbol.toStringTag];
+>stringTag : Symbol(stringTag, Decl(useSharedArrayBuffer5.ts, 3, 3))
+>foge : Symbol(foge, Decl(useSharedArrayBuffer5.ts, 1, 3))
+>Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
+>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --))
+>toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
+
diff --git a/tests/baselines/reference/useSharedArrayBuffer5.types b/tests/baselines/reference/useSharedArrayBuffer5.types
new file mode 100644
index 00000000000..9e7627a503b
--- /dev/null
+++ b/tests/baselines/reference/useSharedArrayBuffer5.types
@@ -0,0 +1,24 @@
+=== tests/cases/conformance/es2017/useSharedArrayBuffer5.ts ===
+
+var foge = new SharedArrayBuffer(1024);
+>foge : SharedArrayBuffer
+>new SharedArrayBuffer(1024) : SharedArrayBuffer
+>SharedArrayBuffer : SharedArrayBufferConstructor
+>1024 : number
+
+var species = foge[Symbol.species];
+>species : SharedArrayBuffer
+>foge[Symbol.species] : SharedArrayBuffer
+>foge : SharedArrayBuffer
+>Symbol.species : symbol
+>Symbol : SymbolConstructor
+>species : symbol
+
+var stringTag = foge[Symbol.toStringTag];
+>stringTag : "SharedArrayBuffer"
+>foge[Symbol.toStringTag] : "SharedArrayBuffer"
+>foge : SharedArrayBuffer
+>Symbol.toStringTag : symbol
+>Symbol : SymbolConstructor
+>toStringTag : symbol
+
diff --git a/tests/baselines/reference/useSharedArrayBuffer6.js b/tests/baselines/reference/useSharedArrayBuffer6.js
new file mode 100644
index 00000000000..598bc46217e
--- /dev/null
+++ b/tests/baselines/reference/useSharedArrayBuffer6.js
@@ -0,0 +1,10 @@
+//// [useSharedArrayBuffer6.ts]
+
+var foge = new SharedArrayBuffer(1024);
+var species = foge[Symbol.species];
+var stringTag = foge[Symbol.toStringTag];
+
+//// [useSharedArrayBuffer6.js]
+var foge = new SharedArrayBuffer(1024);
+var species = foge[Symbol.species];
+var stringTag = foge[Symbol.toStringTag];
diff --git a/tests/baselines/reference/useSharedArrayBuffer6.symbols b/tests/baselines/reference/useSharedArrayBuffer6.symbols
new file mode 100644
index 00000000000..afdbac86cd6
--- /dev/null
+++ b/tests/baselines/reference/useSharedArrayBuffer6.symbols
@@ -0,0 +1,20 @@
+=== tests/cases/conformance/es2017/useSharedArrayBuffer6.ts ===
+
+var foge = new SharedArrayBuffer(1024);
+>foge : Symbol(foge, Decl(useSharedArrayBuffer6.ts, 1, 3))
+>SharedArrayBuffer : Symbol(SharedArrayBuffer, Decl(lib.es2017.sharedmemory.d.ts, --, --), Decl(lib.es2017.sharedmemory.d.ts, --, --))
+
+var species = foge[Symbol.species];
+>species : Symbol(species, Decl(useSharedArrayBuffer6.ts, 2, 3))
+>foge : Symbol(foge, Decl(useSharedArrayBuffer6.ts, 1, 3))
+>Symbol.species : Symbol(SymbolConstructor.species, Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
+>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --))
+>species : Symbol(SymbolConstructor.species, Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
+
+var stringTag = foge[Symbol.toStringTag];
+>stringTag : Symbol(stringTag, Decl(useSharedArrayBuffer6.ts, 3, 3))
+>foge : Symbol(foge, Decl(useSharedArrayBuffer6.ts, 1, 3))
+>Symbol.toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
+>Symbol : Symbol(Symbol, Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --))
+>toStringTag : Symbol(SymbolConstructor.toStringTag, Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
+
diff --git a/tests/baselines/reference/useSharedArrayBuffer6.types b/tests/baselines/reference/useSharedArrayBuffer6.types
new file mode 100644
index 00000000000..45439b9331e
--- /dev/null
+++ b/tests/baselines/reference/useSharedArrayBuffer6.types
@@ -0,0 +1,24 @@
+=== tests/cases/conformance/es2017/useSharedArrayBuffer6.ts ===
+
+var foge = new SharedArrayBuffer(1024);
+>foge : SharedArrayBuffer
+>new SharedArrayBuffer(1024) : SharedArrayBuffer
+>SharedArrayBuffer : SharedArrayBufferConstructor
+>1024 : number
+
+var species = foge[Symbol.species];
+>species : SharedArrayBuffer
+>foge[Symbol.species] : SharedArrayBuffer
+>foge : SharedArrayBuffer
+>Symbol.species : symbol
+>Symbol : SymbolConstructor
+>species : symbol
+
+var stringTag = foge[Symbol.toStringTag];
+>stringTag : "SharedArrayBuffer"
+>foge[Symbol.toStringTag] : "SharedArrayBuffer"
+>foge : SharedArrayBuffer
+>Symbol.toStringTag : symbol
+>Symbol : SymbolConstructor
+>toStringTag : symbol
+
diff --git a/tests/cases/conformance/es2017/useSharedArrayBuffer1.ts b/tests/cases/conformance/es2017/useSharedArrayBuffer1.ts
new file mode 100644
index 00000000000..78d8c23f98a
--- /dev/null
+++ b/tests/cases/conformance/es2017/useSharedArrayBuffer1.ts
@@ -0,0 +1,6 @@
+// @target: es5
+// @lib: es5,es2017.sharedmemory
+
+var foge = new SharedArrayBuffer(1024);
+var bar = foge.slice(1, 10);
+var len = foge.byteLength;
\ No newline at end of file
diff --git a/tests/cases/conformance/es2017/useSharedArrayBuffer2.ts b/tests/cases/conformance/es2017/useSharedArrayBuffer2.ts
new file mode 100644
index 00000000000..68d7702fa2a
--- /dev/null
+++ b/tests/cases/conformance/es2017/useSharedArrayBuffer2.ts
@@ -0,0 +1,6 @@
+// @target: es5
+// @lib: es5
+
+var foge = new SharedArrayBuffer(1024);
+var bar = foge.slice(1, 10);
+var len = foge.byteLength;
\ No newline at end of file
diff --git a/tests/cases/conformance/es2017/useSharedArrayBuffer3.ts b/tests/cases/conformance/es2017/useSharedArrayBuffer3.ts
new file mode 100644
index 00000000000..62b3b3a21a9
--- /dev/null
+++ b/tests/cases/conformance/es2017/useSharedArrayBuffer3.ts
@@ -0,0 +1,5 @@
+// @target: es6
+
+var foge = new SharedArrayBuffer(1024);
+var bar = foge.slice(1, 10);
+var len = foge.byteLength;
\ No newline at end of file
diff --git a/tests/cases/conformance/es2017/useSharedArrayBuffer4.ts b/tests/cases/conformance/es2017/useSharedArrayBuffer4.ts
new file mode 100644
index 00000000000..4d47c739ff3
--- /dev/null
+++ b/tests/cases/conformance/es2017/useSharedArrayBuffer4.ts
@@ -0,0 +1,8 @@
+// @target: es6
+// @lib: es2017
+
+var foge = new SharedArrayBuffer(1024);
+var bar = foge.slice(1, 10);
+var species = foge[Symbol.species];
+var stringTag = foge[Symbol.toStringTag];
+var len = foge.byteLength;
\ No newline at end of file
diff --git a/tests/cases/conformance/es2017/useSharedArrayBuffer5.ts b/tests/cases/conformance/es2017/useSharedArrayBuffer5.ts
new file mode 100644
index 00000000000..3606c1c6346
--- /dev/null
+++ b/tests/cases/conformance/es2017/useSharedArrayBuffer5.ts
@@ -0,0 +1,6 @@
+// @target: es5
+// @lib: es6,es2017.sharedmemory
+
+var foge = new SharedArrayBuffer(1024);
+var species = foge[Symbol.species];
+var stringTag = foge[Symbol.toStringTag];
\ No newline at end of file
diff --git a/tests/cases/conformance/es2017/useSharedArrayBuffer6.ts b/tests/cases/conformance/es2017/useSharedArrayBuffer6.ts
new file mode 100644
index 00000000000..3606c1c6346
--- /dev/null
+++ b/tests/cases/conformance/es2017/useSharedArrayBuffer6.ts
@@ -0,0 +1,6 @@
+// @target: es5
+// @lib: es6,es2017.sharedmemory
+
+var foge = new SharedArrayBuffer(1024);
+var species = foge[Symbol.species];
+var stringTag = foge[Symbol.toStringTag];
\ No newline at end of file
diff --git a/tests/cases/unittests/commandLineParsing.ts b/tests/cases/unittests/commandLineParsing.ts
index 9b43e666f57..8212ff03da4 100644
--- a/tests/cases/unittests/commandLineParsing.ts
+++ b/tests/cases/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', 'dom', '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'",
+ messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'dom', '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'",
category: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.category,
code: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
@@ -217,7 +217,7 @@ namespace ts {
start: undefined,
length: undefined,
}, {
- messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'dom', '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'",
+ messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'dom', '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'",
category: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.category,
code: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
@@ -237,7 +237,7 @@ namespace ts {
assertParseResult(["--lib", "es5,", "es7", "0.ts"],
{
errors: [{
- messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'dom', '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'",
+ messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'dom', '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'",
category: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.category,
code: ts.Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
@@ -257,7 +257,7 @@ namespace ts {
assertParseResult(["--lib", "es5, ", "es7", "0.ts"],
{
errors: [{
- messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'dom', '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'",
+ messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'dom', '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'",
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/tests/cases/unittests/convertCompilerOptionsFromJson.ts b/tests/cases/unittests/convertCompilerOptionsFromJson.ts
index a686c7ec10a..b2d6c7d8fb6 100644
--- a/tests/cases/unittests/convertCompilerOptionsFromJson.ts
+++ b/tests/cases/unittests/convertCompilerOptionsFromJson.ts
@@ -233,7 +233,7 @@ namespace ts {
file: undefined,
start: 0,
length: 0,
- messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'dom', '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'",
+ messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'dom', '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'",
code: Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
category: Diagnostics.Argument_for_0_option_must_be_Colon_1.category
}]
@@ -264,7 +264,7 @@ namespace ts {
file: undefined,
start: 0,
length: 0,
- messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'dom', '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'",
+ messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'dom', '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'",
code: Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
category: Diagnostics.Argument_for_0_option_must_be_Colon_1.category
}]
@@ -295,7 +295,7 @@ namespace ts {
file: undefined,
start: 0,
length: 0,
- messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'dom', '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'",
+ messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'dom', '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'",
code: Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
category: Diagnostics.Argument_for_0_option_must_be_Colon_1.category
}]
@@ -326,7 +326,7 @@ namespace ts {
file: undefined,
start: 0,
length: 0,
- messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'dom', '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'",
+ messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', 'dom', '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'",
code: Diagnostics.Argument_for_0_option_must_be_Colon_1.code,
category: Diagnostics.Argument_for_0_option_must_be_Colon_1.category
}]