diff --git a/src/services/formatting/rules.ts b/src/services/formatting/rules.ts index 815237df228..36ea7de23b4 100644 --- a/src/services/formatting/rules.ts +++ b/src/services/formatting/rules.ts @@ -198,7 +198,7 @@ namespace ts.formatting { rule("NoSpaceAfterCloseAngularBracket", SyntaxKind.GreaterThanToken, [SyntaxKind.OpenParenToken, SyntaxKind.OpenBracketToken, SyntaxKind.GreaterThanToken, SyntaxKind.CommaToken], - [isNonJsxSameLineTokenContext, isTypeArgumentOrParameterOrAssertionContext], + [isNonJsxSameLineTokenContext, isTypeArgumentOrParameterOrAssertionContext, isNotFunctionDeclContext /*To prevent an interference with the SpaceBeforeOpenParenInFuncDecl rule*/], RuleAction.Delete), // decorators @@ -542,6 +542,10 @@ namespace ts.formatting { return false; } + function isNotFunctionDeclContext(context: FormattingContext): boolean { + return !isFunctionDeclContext(context); + } + function isFunctionDeclarationOrFunctionExpressionContext(context: FormattingContext): boolean { return context.contextNode.kind === SyntaxKind.FunctionDeclaration || context.contextNode.kind === SyntaxKind.FunctionExpression; } diff --git a/tests/cases/fourslash/formattingSpaceBeforeFunctionParen.ts b/tests/cases/fourslash/formattingSpaceBeforeFunctionParen.ts index ce85521879e..42e48ecd38d 100644 --- a/tests/cases/fourslash/formattingSpaceBeforeFunctionParen.ts +++ b/tests/cases/fourslash/formattingSpaceBeforeFunctionParen.ts @@ -4,6 +4,7 @@ /////*2*/function boo () { } /////*3*/var bar = function foo() { }; /////*4*/var foo = { bar() { } }; +/////*5*/function tmpl () { } format.setOption("InsertSpaceBeforeFunctionParenthesis", true); @@ -16,4 +17,6 @@ verify.currentLineContentIs('function boo () { }'); goTo.marker('3'); verify.currentLineContentIs('var bar = function foo () { };'); goTo.marker('4'); -verify.currentLineContentIs('var foo = { bar () { } };'); \ No newline at end of file +verify.currentLineContentIs('var foo = { bar () { } };'); +goTo.marker('5'); +verify.currentLineContentIs('function tmpl () { }'); diff --git a/tests/cases/fourslash/genericsFormatting.ts b/tests/cases/fourslash/genericsFormatting.ts index f5e44522a8e..bb2a218a440 100644 --- a/tests/cases/fourslash/genericsFormatting.ts +++ b/tests/cases/fourslash/genericsFormatting.ts @@ -15,7 +15,7 @@ ////foo()(); ////(a + b)(); //// -////function bar() { +/////*inFunctionDeclaration*/function bar () { /////*inClassExpression*/ return class < T2 > { //// } ////} @@ -42,6 +42,9 @@ verify.currentLineContentIs(" new (a: T);"); goTo.marker("inOptionalMethodSignature"); verify.currentLineContentIs(" op?(a: T, b: M);"); +goTo.marker("inFunctionDeclaration"); +verify.currentLineContentIs("function bar() {"); + goTo.marker("inClassExpression"); verify.currentLineContentIs(" return class {");