diff --git a/tests/baselines/reference/typeReferenceDirectives13.js b/tests/baselines/reference/typeReferenceDirectives13.js
new file mode 100644
index 00000000000..9fecdd47f77
--- /dev/null
+++ b/tests/baselines/reference/typeReferenceDirectives13.js
@@ -0,0 +1,26 @@
+//// [tests/cases/compiler/typeReferenceDirectives13.ts] ////
+
+//// [ref.d.ts]
+
+export interface $ { x }
+
+//// [index.d.ts]
+declare let $: { x: number }
+
+//// [app.ts]
+///
+import {$} from "./ref";
+export interface A {
+ x: () => typeof $
+}
+
+
+//// [app.js]
+"use strict";
+
+
+//// [app.d.ts]
+///
+export interface A {
+ x: () => typeof $;
+}
diff --git a/tests/baselines/reference/typeReferenceDirectives13.symbols b/tests/baselines/reference/typeReferenceDirectives13.symbols
new file mode 100644
index 00000000000..90a32b16341
--- /dev/null
+++ b/tests/baselines/reference/typeReferenceDirectives13.symbols
@@ -0,0 +1,24 @@
+=== /app.ts ===
+///
+import {$} from "./ref";
+>$ : Symbol($, Decl(app.ts, 1, 8))
+
+export interface A {
+>A : Symbol(A, Decl(app.ts, 1, 24))
+
+ x: () => typeof $
+>x : Symbol(A.x, Decl(app.ts, 2, 20))
+>$ : Symbol($, Decl(app.ts, 1, 8))
+}
+
+=== /ref.d.ts ===
+
+export interface $ { x }
+>$ : Symbol($, Decl(ref.d.ts, 0, 0))
+>x : Symbol($.x, Decl(ref.d.ts, 1, 20))
+
+=== /types/lib/index.d.ts ===
+declare let $: { x: number }
+>$ : Symbol($, Decl(index.d.ts, 0, 11))
+>x : Symbol(x, Decl(index.d.ts, 0, 16))
+
diff --git a/tests/baselines/reference/typeReferenceDirectives13.trace.json b/tests/baselines/reference/typeReferenceDirectives13.trace.json
new file mode 100644
index 00000000000..b6adaf1f513
--- /dev/null
+++ b/tests/baselines/reference/typeReferenceDirectives13.trace.json
@@ -0,0 +1,14 @@
+[
+ "======== Resolving type reference directive 'lib', containing file '/app.ts', root directory '/'. ========",
+ "Resolving with primary search path '/types/'",
+ "File '/types/lib/package.json' does not exist.",
+ "File '/types/lib/index.d.ts' exist - use it as a name resolution result.",
+ "======== Type reference directive 'lib' was successfully resolved to '/types/lib/index.d.ts', primary: true. ========",
+ "======== Resolving module './ref' from '/app.ts'. ========",
+ "Module resolution kind is not specified, using 'NodeJs'.",
+ "Loading module as file / folder, candidate module location '/ref'.",
+ "File '/ref.ts' does not exist.",
+ "File '/ref.tsx' does not exist.",
+ "File '/ref.d.ts' exist - use it as a name resolution result.",
+ "======== Module name './ref' was successfully resolved to '/ref.d.ts'. ========"
+]
\ No newline at end of file
diff --git a/tests/baselines/reference/typeReferenceDirectives13.types b/tests/baselines/reference/typeReferenceDirectives13.types
new file mode 100644
index 00000000000..240661883bb
--- /dev/null
+++ b/tests/baselines/reference/typeReferenceDirectives13.types
@@ -0,0 +1,24 @@
+=== /app.ts ===
+///
+import {$} from "./ref";
+>$ : any
+
+export interface A {
+>A : A
+
+ x: () => typeof $
+>x : () => { x: number; }
+>$ : { x: number; }
+}
+
+=== /ref.d.ts ===
+
+export interface $ { x }
+>$ : $
+>x : any
+
+=== /types/lib/index.d.ts ===
+declare let $: { x: number }
+>$ : { x: number; }
+>x : number
+
diff --git a/tests/cases/compiler/typeReferenceDirectives13.ts b/tests/cases/compiler/typeReferenceDirectives13.ts
new file mode 100644
index 00000000000..816d419e9d5
--- /dev/null
+++ b/tests/cases/compiler/typeReferenceDirectives13.ts
@@ -0,0 +1,17 @@
+// @noImplicitReferences: true
+// @declaration: true
+// @typesRoot: /
+// @traceResolution: true
+
+// @filename: /ref.d.ts
+export interface $ { x }
+
+// @filename: /types/lib/index.d.ts
+declare let $: { x: number }
+
+// @filename: /app.ts
+///
+import {$} from "./ref";
+export interface A {
+ x: () => typeof $
+}