diff --git a/__tests__/formatter/builtin-directives.test.ts b/__tests__/formatter/builtin-directives.test.ts index b6beefc4..3aa02bc3 100644 --- a/__tests__/formatter/builtin-directives.test.ts +++ b/__tests__/formatter/builtin-directives.test.ts @@ -867,4 +867,12 @@ describe("formatter builtin directives test", () => { sortHtmlAttributes: "idiomatic", }); }); + + test("@if-@break structure", async () => { + const content = ["@if ($user)", " @break", "@endif"].join("\n"); + + const expected = ["@if ($user)", " @break", "@endif", ""].join("\n"); + + await util.doubleFormatCheck(content, expected); + }); }); diff --git a/src/formatter.ts b/src/formatter.ts index 8ce938be..7772a2f6 100644 --- a/src/formatter.ts +++ b/src/formatter.ts @@ -127,6 +127,13 @@ export default class Formatter { return; } + // if @break is inside @if, decrement indent after @break + if (_.last(this.stack) === "@if" && token === "@break") { + this.shouldBeIndent = false; + + return; + } + if (_.includes(phpKeywordEndTokens, token)) { if (token === "@break") { this.decrementIndentLevel();