diff --git a/src/compiler/program.ts b/src/compiler/program.ts
index 1e628326ba7e2..3bd4bdc7ac066 100644
--- a/src/compiler/program.ts
+++ b/src/compiler/program.ts
@@ -219,7 +219,12 @@ module ts {
// Create the emit resolver outside of the "emitTime" tracking code below. That way
// any cost associated with it (like type checking) are appropriate associated with
// the type-checking counter.
- let emitResolver = getDiagnosticsProducingTypeChecker().getEmitResolver(sourceFile);
+ //
+ // If the -out option is specified, we should not pass the source file to getEmitResolver.
+ // This is because in the -out scenario all files need to be emitted, and therefore all
+ // files need to be type checked. And the way to specify that all files need to be type
+ // checked is to not pass the file to getEmitResolver.
+ let emitResolver = getDiagnosticsProducingTypeChecker().getEmitResolver(options.out ? undefined : sourceFile);
let start = new Date().getTime();
diff --git a/tests/baselines/reference/getEmitOutputOut.baseline b/tests/baselines/reference/getEmitOutputOut.baseline
new file mode 100644
index 0000000000000..9508b6d55708e
--- /dev/null
+++ b/tests/baselines/reference/getEmitOutputOut.baseline
@@ -0,0 +1,12 @@
+EmitSkipped: false
+FileName : out.js
+///
+var foo;
+(function (foo) {
+ var bar;
+ (function (bar) {
+ var baz1 = bar.Baz.prototype; // Should emit as bar.Baz.prototype
+ })(bar = foo.bar || (foo.bar = {}));
+})(foo || (foo = {}));
+var x;
+
diff --git a/tests/cases/fourslash/getEmitOutputOut.ts b/tests/cases/fourslash/getEmitOutputOut.ts
new file mode 100644
index 0000000000000..077b257e4de81
--- /dev/null
+++ b/tests/cases/fourslash/getEmitOutputOut.ts
@@ -0,0 +1,23 @@
+///
+
+// @BaselineFile: getEmitOutputOut.baseline
+// @out: out.js
+
+// @Filename: my.d.ts
+// @emitThisFile: false
+////declare module foo.bar {
+//// class Baz { }
+////}
+
+// @Filename: input0.ts
+// @emitThisFile: false
+///////
+////module foo.bar {
+//// var baz1 = Baz.prototype; // Should emit as bar.Baz.prototype
+////}
+
+// @Filename: input1.ts
+// @emitThisFile: true
+////var x;
+
+verify.baselineGetEmitOutput();
\ No newline at end of file