diff --git a/src/compiler/commandLineParser.ts b/src/compiler/commandLineParser.ts
index 4e8b81da81b..c097f18eaec 100644
--- a/src/compiler/commandLineParser.ts
+++ b/src/compiler/commandLineParser.ts
@@ -408,6 +408,7 @@ namespace ts {
"es2017": "lib.es2017.d.ts",
// Host only
"dom": "lib.dom.d.ts",
+ "dom.iterable": "lib.dom.iterable.d.ts",
"webworker": "lib.webworker.d.ts",
"scripthost": "lib.scripthost.d.ts",
// ES2015 Or ESNext By-feature options
diff --git a/src/harness/unittests/commandLineParsing.ts b/src/harness/unittests/commandLineParsing.ts
index afd0ff6f0ea..028786eef24 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', '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'",
+ messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', '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'",
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', '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'",
+ messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', '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'",
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', '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'",
+ messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', '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'",
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 9de18850477..3f4314a9976 100644
--- a/src/harness/unittests/convertCompilerOptionsFromJson.ts
+++ b/src/harness/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', 'es2017.sharedmemory'",
+ messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', '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'",
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', 'es2017.sharedmemory'",
+ messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', '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'",
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', 'es2017.sharedmemory'",
+ messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', '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'",
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', 'es2017.sharedmemory'",
+ messageText: "Argument for '--lib' option must be: 'es5', 'es6', 'es2015', 'es7', 'es2016', 'es2017', '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'",
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/dom.iterable.d.ts b/src/lib/dom.iterable.d.ts
index 4f6378f038e..7f653dc8e0c 100644
--- a/src/lib/dom.iterable.d.ts
+++ b/src/lib/dom.iterable.d.ts
@@ -1,4 +1,4 @@
-///
+///
interface DOMTokenList {
[Symbol.iterator](): IterableIterator;
diff --git a/tests/baselines/reference/modularizeLibrary_Dom.iterable.js b/tests/baselines/reference/modularizeLibrary_Dom.iterable.js
new file mode 100644
index 00000000000..a448e8359a5
--- /dev/null
+++ b/tests/baselines/reference/modularizeLibrary_Dom.iterable.js
@@ -0,0 +1,10 @@
+//// [modularizeLibrary_Dom.iterable.ts]
+
+for (const element of document.getElementsByTagName("a")) {
+ element.href;
+}
+
+//// [modularizeLibrary_Dom.iterable.js]
+for (const element of document.getElementsByTagName("a")) {
+ element.href;
+}
diff --git a/tests/baselines/reference/modularizeLibrary_Dom.iterable.symbols b/tests/baselines/reference/modularizeLibrary_Dom.iterable.symbols
new file mode 100644
index 00000000000..a487763582b
--- /dev/null
+++ b/tests/baselines/reference/modularizeLibrary_Dom.iterable.symbols
@@ -0,0 +1,13 @@
+=== tests/cases/compiler/modularizeLibrary_Dom.iterable.ts ===
+
+for (const element of document.getElementsByTagName("a")) {
+>element : Symbol(element, Decl(modularizeLibrary_Dom.iterable.ts, 1, 10))
+>document.getElementsByTagName : Symbol(Document.getElementsByTagName, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --))
+>document : Symbol(document, Decl(lib.dom.d.ts, --, --))
+>getElementsByTagName : Symbol(Document.getElementsByTagName, Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --), Decl(lib.dom.d.ts, --, --))
+
+ element.href;
+>element.href : Symbol(HTMLAnchorElement.href, Decl(lib.dom.d.ts, --, --))
+>element : Symbol(element, Decl(modularizeLibrary_Dom.iterable.ts, 1, 10))
+>href : Symbol(HTMLAnchorElement.href, Decl(lib.dom.d.ts, --, --))
+}
diff --git a/tests/baselines/reference/modularizeLibrary_Dom.iterable.types b/tests/baselines/reference/modularizeLibrary_Dom.iterable.types
new file mode 100644
index 00000000000..dbce5e17ae2
--- /dev/null
+++ b/tests/baselines/reference/modularizeLibrary_Dom.iterable.types
@@ -0,0 +1,15 @@
+=== tests/cases/compiler/modularizeLibrary_Dom.iterable.ts ===
+
+for (const element of document.getElementsByTagName("a")) {
+>element : HTMLAnchorElement
+>document.getElementsByTagName("a") : NodeListOf
+>document.getElementsByTagName : { (tagname: "a"): NodeListOf; (tagname: "abbr"): NodeListOf; (tagname: "acronym"): NodeListOf; (tagname: "address"): NodeListOf; (tagname: "applet"): NodeListOf; (tagname: "area"): NodeListOf; (tagname: "article"): NodeListOf; (tagname: "aside"): NodeListOf; (tagname: "audio"): NodeListOf; (tagname: "b"): NodeListOf; (tagname: "base"): NodeListOf; (tagname: "basefont"): NodeListOf; (tagname: "bdo"): NodeListOf; (tagname: "big"): NodeListOf; (tagname: "blockquote"): NodeListOf; (tagname: "body"): NodeListOf; (tagname: "br"): NodeListOf; (tagname: "button"): NodeListOf; (tagname: "canvas"): NodeListOf; (tagname: "caption"): NodeListOf; (tagname: "center"): NodeListOf; (tagname: "circle"): NodeListOf; (tagname: "cite"): NodeListOf; (tagname: "clippath"): NodeListOf; (tagname: "code"): NodeListOf; (tagname: "col"): NodeListOf; (tagname: "colgroup"): NodeListOf; (tagname: "datalist"): NodeListOf; (tagname: "dd"): NodeListOf; (tagname: "defs"): NodeListOf; (tagname: "del"): NodeListOf; (tagname: "desc"): NodeListOf; (tagname: "dfn"): NodeListOf; (tagname: "dir"): NodeListOf; (tagname: "div"): NodeListOf; (tagname: "dl"): NodeListOf; (tagname: "dt"): NodeListOf; (tagname: "ellipse"): NodeListOf; (tagname: "em"): NodeListOf; (tagname: "embed"): NodeListOf; (tagname: "feblend"): NodeListOf; (tagname: "fecolormatrix"): NodeListOf; (tagname: "fecomponenttransfer"): NodeListOf; (tagname: "fecomposite"): NodeListOf; (tagname: "feconvolvematrix"): NodeListOf; (tagname: "fediffuselighting"): NodeListOf; (tagname: "fedisplacementmap"): NodeListOf; (tagname: "fedistantlight"): NodeListOf; (tagname: "feflood"): NodeListOf; (tagname: "fefunca"): NodeListOf; (tagname: "fefuncb"): NodeListOf; (tagname: "fefuncg"): NodeListOf; (tagname: "fefuncr"): NodeListOf; (tagname: "fegaussianblur"): NodeListOf; (tagname: "feimage"): NodeListOf; (tagname: "femerge"): NodeListOf; (tagname: "femergenode"): NodeListOf; (tagname: "femorphology"): NodeListOf; (tagname: "feoffset"): NodeListOf; (tagname: "fepointlight"): NodeListOf; (tagname: "fespecularlighting"): NodeListOf; (tagname: "fespotlight"): NodeListOf; (tagname: "fetile"): NodeListOf; (tagname: "feturbulence"): NodeListOf; (tagname: "fieldset"): NodeListOf; (tagname: "figcaption"): NodeListOf; (tagname: "figure"): NodeListOf; (tagname: "filter"): NodeListOf; (tagname: "font"): NodeListOf; (tagname: "footer"): NodeListOf; (tagname: "foreignobject"): NodeListOf; (tagname: "form"): NodeListOf; (tagname: "frame"): NodeListOf; (tagname: "frameset"): NodeListOf; (tagname: "g"): NodeListOf; (tagname: "h1"): NodeListOf; (tagname: "h2"): NodeListOf; (tagname: "h3"): NodeListOf; (tagname: "h4"): NodeListOf; (tagname: "h5"): NodeListOf; (tagname: "h6"): NodeListOf; (tagname: "head"): NodeListOf; (tagname: "header"): NodeListOf; (tagname: "hgroup"): NodeListOf; (tagname: "hr"): NodeListOf; (tagname: "html"): NodeListOf; (tagname: "i"): NodeListOf; (tagname: "iframe"): NodeListOf; (tagname: "image"): NodeListOf; (tagname: "img"): NodeListOf; (tagname: "input"): NodeListOf; (tagname: "ins"): NodeListOf; (tagname: "isindex"): NodeListOf; (tagname: "kbd"): NodeListOf; (tagname: "keygen"): NodeListOf; (tagname: "label"): NodeListOf; (tagname: "legend"): NodeListOf; (tagname: "li"): NodeListOf; (tagname: "line"): NodeListOf; (tagname: "lineargradient"): NodeListOf; (tagname: "link"): NodeListOf; (tagname: "listing"): NodeListOf; (tagname: "map"): NodeListOf; (tagname: "mark"): NodeListOf; (tagname: "marker"): NodeListOf; (tagname: "marquee"): NodeListOf; (tagname: "mask"): NodeListOf; (tagname: "menu"): NodeListOf; (tagname: "meta"): NodeListOf; (tagname: "metadata"): NodeListOf; (tagname: "meter"): NodeListOf; (tagname: "nav"): NodeListOf; (tagname: "nextid"): NodeListOf; (tagname: "nobr"): NodeListOf; (tagname: "noframes"): NodeListOf; (tagname: "noscript"): NodeListOf; (tagname: "object"): NodeListOf; (tagname: "ol"): NodeListOf; (tagname: "optgroup"): NodeListOf; (tagname: "option"): NodeListOf; (tagname: "p"): NodeListOf; (tagname: "param"): NodeListOf; (tagname: "path"): NodeListOf; (tagname: "pattern"): NodeListOf; (tagname: "picture"): NodeListOf; (tagname: "plaintext"): NodeListOf; (tagname: "polygon"): NodeListOf; (tagname: "polyline"): NodeListOf; (tagname: "pre"): NodeListOf; (tagname: "progress"): NodeListOf; (tagname: "q"): NodeListOf; (tagname: "radialgradient"): NodeListOf; (tagname: "rect"): NodeListOf; (tagname: "rt"): NodeListOf; (tagname: "ruby"): NodeListOf; (tagname: "s"): NodeListOf; (tagname: "samp"): NodeListOf; (tagname: "script"): NodeListOf; (tagname: "section"): NodeListOf; (tagname: "select"): NodeListOf; (tagname: "small"): NodeListOf; (tagname: "source"): NodeListOf; (tagname: "span"): NodeListOf; (tagname: "stop"): NodeListOf; (tagname: "strike"): NodeListOf; (tagname: "strong"): NodeListOf; (tagname: "style"): NodeListOf; (tagname: "sub"): NodeListOf; (tagname: "sup"): NodeListOf; (tagname: "svg"): NodeListOf; (tagname: "switch"): NodeListOf; (tagname: "symbol"): NodeListOf; (tagname: "table"): NodeListOf; (tagname: "tbody"): NodeListOf; (tagname: "td"): NodeListOf; (tagname: "template"): NodeListOf; (tagname: "text"): NodeListOf; (tagname: "textpath"): NodeListOf; (tagname: "textarea"): NodeListOf; (tagname: "tfoot"): NodeListOf; (tagname: "th"): NodeListOf; (tagname: "thead"): NodeListOf; (tagname: "title"): NodeListOf; (tagname: "tr"): NodeListOf; (tagname: "track"): NodeListOf; (tagname: "tspan"): NodeListOf; (tagname: "tt"): NodeListOf; (tagname: "u"): NodeListOf; (tagname: "ul"): NodeListOf; (tagname: "use"): NodeListOf; (tagname: "var"): NodeListOf; (tagname: "video"): NodeListOf; (tagname: "view"): NodeListOf; (tagname: "wbr"): NodeListOf; (tagname: "x-ms-webview"): NodeListOf; (tagname: "xmp"): NodeListOf; (tagname: string): NodeListOf; }
+>document : Document
+>getElementsByTagName : { (tagname: "a"): NodeListOf; (tagname: "abbr"): NodeListOf; (tagname: "acronym"): NodeListOf; (tagname: "address"): NodeListOf; (tagname: "applet"): NodeListOf; (tagname: "area"): NodeListOf; (tagname: "article"): NodeListOf; (tagname: "aside"): NodeListOf; (tagname: "audio"): NodeListOf; (tagname: "b"): NodeListOf; (tagname: "base"): NodeListOf; (tagname: "basefont"): NodeListOf; (tagname: "bdo"): NodeListOf; (tagname: "big"): NodeListOf; (tagname: "blockquote"): NodeListOf; (tagname: "body"): NodeListOf; (tagname: "br"): NodeListOf; (tagname: "button"): NodeListOf; (tagname: "canvas"): NodeListOf; (tagname: "caption"): NodeListOf; (tagname: "center"): NodeListOf; (tagname: "circle"): NodeListOf; (tagname: "cite"): NodeListOf; (tagname: "clippath"): NodeListOf; (tagname: "code"): NodeListOf; (tagname: "col"): NodeListOf; (tagname: "colgroup"): NodeListOf; (tagname: "datalist"): NodeListOf; (tagname: "dd"): NodeListOf; (tagname: "defs"): NodeListOf; (tagname: "del"): NodeListOf; (tagname: "desc"): NodeListOf; (tagname: "dfn"): NodeListOf; (tagname: "dir"): NodeListOf; (tagname: "div"): NodeListOf; (tagname: "dl"): NodeListOf; (tagname: "dt"): NodeListOf; (tagname: "ellipse"): NodeListOf; (tagname: "em"): NodeListOf; (tagname: "embed"): NodeListOf; (tagname: "feblend"): NodeListOf; (tagname: "fecolormatrix"): NodeListOf; (tagname: "fecomponenttransfer"): NodeListOf; (tagname: "fecomposite"): NodeListOf; (tagname: "feconvolvematrix"): NodeListOf; (tagname: "fediffuselighting"): NodeListOf; (tagname: "fedisplacementmap"): NodeListOf; (tagname: "fedistantlight"): NodeListOf; (tagname: "feflood"): NodeListOf; (tagname: "fefunca"): NodeListOf; (tagname: "fefuncb"): NodeListOf; (tagname: "fefuncg"): NodeListOf; (tagname: "fefuncr"): NodeListOf; (tagname: "fegaussianblur"): NodeListOf; (tagname: "feimage"): NodeListOf; (tagname: "femerge"): NodeListOf; (tagname: "femergenode"): NodeListOf; (tagname: "femorphology"): NodeListOf; (tagname: "feoffset"): NodeListOf; (tagname: "fepointlight"): NodeListOf; (tagname: "fespecularlighting"): NodeListOf; (tagname: "fespotlight"): NodeListOf; (tagname: "fetile"): NodeListOf; (tagname: "feturbulence"): NodeListOf; (tagname: "fieldset"): NodeListOf; (tagname: "figcaption"): NodeListOf; (tagname: "figure"): NodeListOf; (tagname: "filter"): NodeListOf; (tagname: "font"): NodeListOf; (tagname: "footer"): NodeListOf; (tagname: "foreignobject"): NodeListOf; (tagname: "form"): NodeListOf; (tagname: "frame"): NodeListOf; (tagname: "frameset"): NodeListOf; (tagname: "g"): NodeListOf; (tagname: "h1"): NodeListOf