<p dir="ltr">Yes, the extra test would be good. Thanks!</p>
<div class="gmail_quote">On 24 Jun 2014 18:08, "Alexander Kornienko" <<a href="mailto:alexfh@google.com">alexfh@google.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Jun 24, 2014 at 4:43 PM, Richard Smith <span dir="ltr"><<a href="mailto:richard@metafoo.co.uk" target="_blank">richard@metafoo.co.uk</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">LGTM<br>
<br>
If blocks also need a fix, feel free to do that in a later patch :)<br></blockquote><div><br></div><div>Oh, you're right, I didn't think about blocks. For some reason bodies of blocks are not duplicated in the AST, as it is with lambdas, so the warning works fine with them. If you want, I can add a test for this:</div>

<div><pre style="color:rgb(0,0,0)"><pre>$ cat test/SemaCXX/switch-implicit-fallthrough-blocks.cpp
// RUN: %clang_cc1 -fsyntax-only -verify -fblocks -std=c++11 -Wimplicit-fallthrough %s

void fallthrough_in_blocks() {
  void (^block)() = ^{
    int x = 0;
    switch (x) {
    case 0:
      x++;
      [[clang::fallthrough]]; // no diagnostics
    case 1:
      x++;
    default: // \
        expected-warning{{unannotated fall-through between switch labels}} \
        expected-note{{insert 'break;' to avoid fall-through}}
      break;
    }
  };
  block();
}</pre></pre></div></div>
</div></div>
</blockquote></div>