Allow empty first line in function that returns anonymous object (#655)

diff --git a/ktlint-ruleset-experimental/src/main/kotlin/com/pinterest/ktlint/ruleset/experimental/NoEmptyFirstLineInMethodBlockRule.kt b/ktlint-ruleset-experimental/src/main/kotlin/com/pinterest/ktlint/ruleset/experimental/NoEmptyFirstLineInMethodBlockRule.kt
index 83274b8..b0d5d41 100644
--- a/ktlint-ruleset-experimental/src/main/kotlin/com/pinterest/ktlint/ruleset/experimental/NoEmptyFirstLineInMethodBlockRule.kt
+++ b/ktlint-ruleset-experimental/src/main/kotlin/com/pinterest/ktlint/ruleset/experimental/NoEmptyFirstLineInMethodBlockRule.kt
@@ -2,6 +2,7 @@
 
 import com.pinterest.ktlint.core.Rule
 import com.pinterest.ktlint.core.ast.ElementType
+import com.pinterest.ktlint.core.ast.ElementType.CLASS_BODY
 import com.pinterest.ktlint.core.ast.ElementType.FUN
 import com.pinterest.ktlint.core.ast.isPartOf
 import com.pinterest.ktlint.core.ast.prevLeaf
@@ -17,7 +18,8 @@
         emit: (offset: Int, errorMessage: String, canBeAutoCorrected: Boolean) -> Unit
     ) {
         if (node is PsiWhiteSpace && node.textContains('\n') &&
-            node.prevLeaf()?.elementType == ElementType.LBRACE && node.isPartOf(FUN)
+            node.prevLeaf()?.elementType == ElementType.LBRACE && node.isPartOf(FUN) &&
+            node.treeParent.elementType != CLASS_BODY // fun fn() = object : Builder {\n\n fun stuff() = Unit }
         ) {
             val split = node.getText().split("\n")
             if (split.size > 2) {
diff --git a/ktlint-ruleset-experimental/src/test/kotlin/com/pinterest/ktlint/ruleset/experimental/NoEmptyFirstLineInMethodBlockRuleTest.kt b/ktlint-ruleset-experimental/src/test/kotlin/com/pinterest/ktlint/ruleset/experimental/NoEmptyFirstLineInMethodBlockRuleTest.kt
index 5e814a2..9c46f40 100644
--- a/ktlint-ruleset-experimental/src/test/kotlin/com/pinterest/ktlint/ruleset/experimental/NoEmptyFirstLineInMethodBlockRuleTest.kt
+++ b/ktlint-ruleset-experimental/src/test/kotlin/com/pinterest/ktlint/ruleset/experimental/NoEmptyFirstLineInMethodBlockRuleTest.kt
@@ -140,4 +140,32 @@
         )
         assertThat(NoEmptyFirstLineInMethodBlockRule().format(unformattedFunction)).isEqualTo(formattedFunction)
     }
+
+    @Test
+    fun `lint empty first line may be placed in function inside anonymous object`() {
+        val code =
+            """
+            fun fooBuilder() = object : Foo {
+            
+                override fun foo() {
+                    TODO()
+                }
+            }
+            """.trimIndent()
+        assertThat(NoEmptyFirstLineInMethodBlockRule().lint(code)).isEmpty()
+    }
+
+    @Test
+    fun `format empty first line may be placed in function inside anonymous object`() {
+        val code =
+            """
+            fun fooBuilder() = object : Foo {
+            
+                override fun foo() {
+                    TODO()
+                }
+            }
+            """.trimIndent()
+        assertThat(NoEmptyFirstLineInMethodBlockRule().format(code)).isEqualTo(code)
+    }
 }