diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts
index cb96731dbcf68..e917ef9bfe6e1 100644
--- a/src/compiler/parser.ts
+++ b/src/compiler/parser.ts
@@ -5428,11 +5428,13 @@ namespace ts {
// reference comment.
while (true) {
const kind = triviaScanner.scan();
- if (kind === SyntaxKind.WhitespaceTrivia || kind === SyntaxKind.NewLineTrivia || kind === SyntaxKind.MultiLineCommentTrivia) {
- continue;
- }
if (kind !== SyntaxKind.SingleLineCommentTrivia) {
- break;
+ if (isTrivia(kind)) {
+ continue;
+ }
+ else {
+ break;
+ }
}
const range = { pos: triviaScanner.getTokenPos(), end: triviaScanner.getTextPos(), kind: triviaScanner.getToken() };
diff --git a/tests/baselines/reference/shebangBeforeReferences.js b/tests/baselines/reference/shebangBeforeReferences.js
new file mode 100644
index 0000000000000..6be2707277d0b
--- /dev/null
+++ b/tests/baselines/reference/shebangBeforeReferences.js
@@ -0,0 +1,21 @@
+//// [tests/cases/compiler/shebangBeforeReferences.ts] ////
+
+//// [f.d.ts]
+
+declare module "test" {
+ let x: number;
+}
+
+//// [f.ts]
+#!/usr/bin/env node
+
+///
+
+declare function use(f: number): void;
+import {x} from "test";
+use(x);
+
+//// [f.js]
+#!/usr/bin/env node"use strict";
+var test_1 = require("test");
+use(test_1.x);
diff --git a/tests/baselines/reference/shebangBeforeReferences.symbols b/tests/baselines/reference/shebangBeforeReferences.symbols
new file mode 100644
index 0000000000000..23bfe58fc6294
--- /dev/null
+++ b/tests/baselines/reference/shebangBeforeReferences.symbols
@@ -0,0 +1,23 @@
+=== tests/cases/compiler/f.ts ===
+#!/usr/bin/env node
+
+///
+
+declare function use(f: number): void;
+>use : Symbol(use, Decl(f.ts, 0, 0))
+>f : Symbol(f, Decl(f.ts, 4, 21))
+
+import {x} from "test";
+>x : Symbol(x, Decl(f.ts, 5, 8))
+
+use(x);
+>use : Symbol(use, Decl(f.ts, 0, 0))
+>x : Symbol(x, Decl(f.ts, 5, 8))
+
+=== tests/cases/compiler/f.d.ts ===
+
+declare module "test" {
+ let x: number;
+>x : Symbol(x, Decl(f.d.ts, 2, 7))
+}
+
diff --git a/tests/baselines/reference/shebangBeforeReferences.types b/tests/baselines/reference/shebangBeforeReferences.types
new file mode 100644
index 0000000000000..89b63a1a0b440
--- /dev/null
+++ b/tests/baselines/reference/shebangBeforeReferences.types
@@ -0,0 +1,24 @@
+=== tests/cases/compiler/f.ts ===
+#!/usr/bin/env node
+
+///
+
+declare function use(f: number): void;
+>use : (f: number) => void
+>f : number
+
+import {x} from "test";
+>x : number
+
+use(x);
+>use(x) : void
+>use : (f: number) => void
+>x : number
+
+=== tests/cases/compiler/f.d.ts ===
+
+declare module "test" {
+ let x: number;
+>x : number
+}
+
diff --git a/tests/cases/compiler/shebangBeforeReferences.ts b/tests/cases/compiler/shebangBeforeReferences.ts
new file mode 100644
index 0000000000000..f03933959ee6a
--- /dev/null
+++ b/tests/cases/compiler/shebangBeforeReferences.ts
@@ -0,0 +1,15 @@
+// @module: commonjs
+
+// @filename: f.d.ts
+declare module "test" {
+ let x: number;
+}
+
+// @filename: f.ts
+#!/usr/bin/env node
+
+///
+
+declare function use(f: number): void;
+import {x} from "test";
+use(x);
\ No newline at end of file