diff --git a/src/harness/fourslash.ts b/src/harness/fourslash.ts
index bdcb3e082d2ed..345709ca550df 100644
--- a/src/harness/fourslash.ts
+++ b/src/harness/fourslash.ts
@@ -2238,6 +2238,20 @@ Actual: ${stringify(fullActual)}`);
             });
         }
 
+        public verifyOutliningHintSpans(spans: Range[]) {
+            const actual = this.languageService.getOutliningSpans(this.activeFile.fileName);
+
+            if (actual.length !== spans.length) {
+                this.raiseError(`verifyOutliningHintSpans failed - expected total spans to be ${spans.length}, but was ${actual.length}`);
+            }
+
+            ts.zipWith(spans, actual, (expectedSpan, actualSpan, i) => {
+                if (expectedSpan.pos !== actualSpan.hintSpan.start || expectedSpan.end !== ts.textSpanEnd(actualSpan.hintSpan)) {
+                    return this.raiseError(`verifyOutliningSpans failed - span ${(i + 1)} expected: (${expectedSpan.pos},${expectedSpan.end}),  actual: (${actualSpan.hintSpan.start},${ts.textSpanEnd(actualSpan.hintSpan)})`);
+                }
+            });
+        }
+
         public verifyTodoComments(descriptors: string[], spans: Range[]) {
             const actual = this.languageService.getTodoComments(this.activeFile.fileName,
                 descriptors.map(d => { return { text: d, priority: 0 }; }));
@@ -4005,6 +4019,10 @@ namespace FourSlashInterface {
             this.state.verifyOutliningSpans(spans, kind);
         }
 
+        public outliningHintSpansInCurrentFile(spans: FourSlash.Range[]) {
+            this.state.verifyOutliningHintSpans(spans);
+        }
+
         public todoCommentsInCurrentFile(descriptors: string[]) {
             this.state.verifyTodoComments(descriptors, this.state.getRanges());
         }
diff --git a/src/services/outliningElementsCollector.ts b/src/services/outliningElementsCollector.ts
index 650a107f4a5e7..bc6d65a9aaa19 100644
--- a/src/services/outliningElementsCollector.ts
+++ b/src/services/outliningElementsCollector.ts
@@ -237,7 +237,7 @@ namespace ts.OutliningElementsCollector {
             ? findChildOfKind(node, SyntaxKind.OpenParenToken, sourceFile)
             : findChildOfKind(body, SyntaxKind.OpenBraceToken, sourceFile);
         const closeToken = findChildOfKind(body, SyntaxKind.CloseBraceToken, sourceFile);
-        return openToken && closeToken && spanBetweenTokens(openToken, closeToken, node.parent, sourceFile, /*autoCollapse*/ node.parent.kind !== SyntaxKind.ArrowFunction);
+        return openToken && closeToken && spanBetweenTokens(openToken, closeToken, node, sourceFile, /*autoCollapse*/ node.kind !== SyntaxKind.ArrowFunction);
     }
 
     function spanBetweenTokens(openToken: Node, closeToken: Node, hintSpanNode: Node, sourceFile: SourceFile, autoCollapse = false, useFullStart = true): OutliningSpan {
diff --git a/tests/cases/fourslash/fourslash.ts b/tests/cases/fourslash/fourslash.ts
index b3253bcd59fff..b471817b4044f 100644
--- a/tests/cases/fourslash/fourslash.ts
+++ b/tests/cases/fourslash/fourslash.ts
@@ -247,6 +247,7 @@ declare namespace FourSlashInterface {
         baselineSmartSelection(): void;
         nameOrDottedNameSpanTextIs(text: string): void;
         outliningSpansInCurrentFile(spans: Range[]): void;
+        outliningHintSpansInCurrentFile(spans: Range[]): void;
         todoCommentsInCurrentFile(descriptors: string[]): void;
         matchingBracePositionInCurrentFile(bracePosition: number, expectedMatchPosition: number): void;
         noMatchingBracePositionInCurrentFile(bracePosition: number): void;
diff --git a/tests/cases/fourslash/outliningHintSpansForFunction.ts b/tests/cases/fourslash/outliningHintSpansForFunction.ts
new file mode 100644
index 0000000000000..49f94ae80758c
--- /dev/null
+++ b/tests/cases/fourslash/outliningHintSpansForFunction.ts
@@ -0,0 +1,16 @@
+/// <reference path="fourslash.ts"/>
+
+////[|namespace NS {
+////    [|function f(x: number, y: number) {
+////        return x + y;
+////    }|]
+////
+////    [|function g(
+////        x: number,
+////        y: number,
+////    ): number {
+////        return x + y;
+////    }|]
+////}|]
+
+verify.outliningHintSpansInCurrentFile(test.ranges());