<html>
    <head>
      <base href="https://bugs.llvm.org/">
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - Incorrect formatting in presence of preprocessor directives surrounding a comment"
   href="https://bugs.llvm.org/show_bug.cgi?id=35276">35276</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>Incorrect formatting in presence of preprocessor directives surrounding a comment
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>clang
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>trunk
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>Formatter
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedclangbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>artemiev.mikhail@gmail.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>djasper@google.com, klimek@google.com, llvm-bugs@lists.llvm.org
          </td>
        </tr></table>
      <p>
        <div>
        <pre>The formatting goes wrong with the following example.

$ cat test.cpp
class A {
public:
  A(const A &a) : data_(a.data_) {
#ifdef FOO
    doStuff();
#endif
  }
  A(A && a) : data_(std::move(a.data_)) {
#ifdef FOO
  // placeholder
#endif
  }
  A(const A& a, int len) {
#ifdef FOO
    doOtherStuff();
#endif
  }
}

$ bin/clang-format -style=llvm test.cpp | tee test_fmt.cpp
class A {
public:
  A(const A &a) : data_(a.data_) {
#ifdef FOO
    doStuff();
#endif
  }
  A(A &&a)
      : data_(std::move(a.data_)){
#ifdef FOO
  // placeholder
#endif
        } A(const A &a, int len) {
#ifdef FOO
    doOtherStuff();
#endif
  }
}

$ diff -u test.cpp test_fmt.cpp
--- test.cpp
+++ test_fmt.cpp
@@ -5,12 +5,12 @@
     doStuff();
 #endif
   }
-  A(A && a) : data_(std::move(a.data_)) {
+  A(A &&a)
+      : data_(std::move(a.data_)){
 #ifdef FOO
   // placeholder
 #endif
-  }
-  A(const A& a, int len) {
+        } A(const A &a, int len) {
 #ifdef FOO
     doOtherStuff();
 #endif</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>