diff --git a/src/services/formatting/formatting.ts b/src/services/formatting/formatting.ts
index 78ddfa5c6e9..8350b2a8dc8 100644
--- a/src/services/formatting/formatting.ts
+++ b/src/services/formatting/formatting.ts
@@ -488,14 +488,16 @@ namespace ts.formatting {
// open and close brace, 'else' and 'while' (in do statement) tokens has indentation of the parent
case SyntaxKind.OpenBraceToken:
case SyntaxKind.CloseBraceToken:
- case SyntaxKind.OpenBracketToken:
- case SyntaxKind.CloseBracketToken:
case SyntaxKind.OpenParenToken:
case SyntaxKind.CloseParenToken:
case SyntaxKind.ElseKeyword:
case SyntaxKind.WhileKeyword:
case SyntaxKind.AtToken:
return indentation;
+ case SyntaxKind.OpenBracketToken:
+ case SyntaxKind.CloseBracketToken:
+ return (container.kind === SyntaxKind.MappedType) ?
+ indentation + getEffectiveDelta(delta, container) : indentation;
default:
// if token line equals to the line of containing node (this is a first token in the node) - use node indentation
return nodeStartLine !== line ? indentation + getEffectiveDelta(delta, container) : indentation;
diff --git a/src/services/formatting/smartIndenter.ts b/src/services/formatting/smartIndenter.ts
index 84f83a9c7db..eb9e1ba04c5 100644
--- a/src/services/formatting/smartIndenter.ts
+++ b/src/services/formatting/smartIndenter.ts
@@ -438,6 +438,7 @@ namespace ts.formatting {
case SyntaxKind.ModuleBlock:
case SyntaxKind.ObjectLiteralExpression:
case SyntaxKind.TypeLiteral:
+ case SyntaxKind.MappedType:
case SyntaxKind.TupleType:
case SyntaxKind.CaseBlock:
case SyntaxKind.DefaultClause:
diff --git a/tests/cases/fourslash/formattingMappedType.ts b/tests/cases/fourslash/formattingMappedType.ts
new file mode 100644
index 00000000000..a33d948a9c3
--- /dev/null
+++ b/tests/cases/fourslash/formattingMappedType.ts
@@ -0,0 +1,12 @@
+///
+
+/////*generic*/type t < T > = {
+/////*map*/ [ P in keyof T ] : T [ P ]
+////};
+
+
+format.document();
+goTo.marker("generic");
+verify.currentLineContentIs("type t = {");
+goTo.marker("map");
+verify.currentLineContentIs(" [P in keyof T]: T[P]");
\ No newline at end of file