From 41e8c05558cfc67a20771f543258f3ec1718b3b3 Mon Sep 17 00:00:00 2001
From: Hackerpilot <briancschott@gmail.com>
Date: Wed, 7 Oct 2020 02:19:55 -0700
Subject: [PATCH] Fix #515

---
 src/dfmt/formatter.d         | 2 +-
 tests/allman/issue0515.d.ref | 7 +++++++
 tests/issue0515.d            | 7 +++++++
 tests/otbs/issue0515.d.ref   | 5 +++++
 4 files changed, 20 insertions(+), 1 deletion(-)
 create mode 100644 tests/allman/issue0515.d.ref
 create mode 100644 tests/issue0515.d
 create mode 100644 tests/otbs/issue0515.d.ref

diff --git a/src/dfmt/formatter.d b/src/dfmt/formatter.d
index 12bd8fe..5a9f896 100644
--- a/src/dfmt/formatter.d
+++ b/src/dfmt/formatter.d
@@ -224,7 +224,7 @@ private:
         else if (currentIs(tok!"return"))
         {
             writeToken();
-            if (!currentIs(tok!";") && !currentIs(tok!")"))
+            if (!currentIs(tok!";") && !currentIs(tok!")") && !currentIs(tok!"{"))
                 write(" ");
         }
         else if (currentIs(tok!"with"))
diff --git a/tests/allman/issue0515.d.ref b/tests/allman/issue0515.d.ref
new file mode 100644
index 0000000..55d01d9
--- /dev/null
+++ b/tests/allman/issue0515.d.ref
@@ -0,0 +1,7 @@
+struct S
+{
+    ref S foo() return
+    {
+        return this;
+    }
+}
diff --git a/tests/issue0515.d b/tests/issue0515.d
new file mode 100644
index 0000000..55d01d9
--- /dev/null
+++ b/tests/issue0515.d
@@ -0,0 +1,7 @@
+struct S
+{
+    ref S foo() return
+    {
+        return this;
+    }
+}
diff --git a/tests/otbs/issue0515.d.ref b/tests/otbs/issue0515.d.ref
new file mode 100644
index 0000000..05d4164
--- /dev/null
+++ b/tests/otbs/issue0515.d.ref
@@ -0,0 +1,5 @@
+struct S {
+    ref S foo() return {
+        return this;
+    }
+}