| // RUN: %clang_cc1 -fcxx-exceptions -fexceptions -fsyntax-only -verify -std=c++11 %s |
| |
| void foo(int i) { |
| |
| [[unknown_attribute]] ; |
| [[unknown_attribute]] { } |
| [[unknown_attribute]] if (0) { } |
| [[unknown_attribute]] for (;;); |
| [[unknown_attribute]] do { |
| [[unknown_attribute]] continue; |
| } while (0); |
| [[unknown_attribute]] while (0); |
| |
| [[unknown_attribute]] switch (i) { |
| [[unknown_attribute]] case 0: |
| [[unknown_attribute]] default: |
| [[unknown_attribute]] break; |
| } |
| |
| [[unknown_attribute]] goto here; |
| [[unknown_attribute]] here: |
| |
| [[unknown_attribute]] try { |
| } catch (...) { |
| } |
| |
| [[unknown_attribute]] return; |
| |
| |
| alignas(8) ; // expected-warning {{attribute aligned cannot be specified on a statement}} |
| [[noreturn]] { } // expected-warning {{attribute noreturn cannot be specified on a statement}} |
| [[noreturn]] if (0) { } // expected-warning {{attribute noreturn cannot be specified on a statement}} |
| [[noreturn]] for (;;); // expected-warning {{attribute noreturn cannot be specified on a statement}} |
| [[noreturn]] do { // expected-warning {{attribute noreturn cannot be specified on a statement}} |
| [[unavailable]] continue; // TODO: only noreturn, alignas and carries_dependency are parsed in C++ 11 syntax at the moment, hence no warning here |
| } while (0); |
| [[unknown_attributqqq]] while (0); // TODO: remove 'qqq' part and enjoy 'empty loop body' warning here (DiagnoseEmptyLoopBody) |
| [[unknown_attribute]] while (0); // no warning here yet, just an unknown attribute |
| |
| [[unused]] switch (i) { // TODO: only noreturn, alignas and carries_dependency are parsed in C++ 11 syntax at the moment, hence no warning here |
| [[uuid]] case 0: // TODO: only noreturn, alignas and carries_dependency are parsed in C++ 11 syntax at the moment, hence no warning here |
| [[visibility]] default: // TODO: only noreturn, alignas and carries_dependency are parsed in C++ 11 syntax at the moment, hence no warning here |
| [[carries_dependency]] break; // expected-warning {{attribute carries_dependency cannot be specified on a statement}} |
| } |
| |
| [[fastcall]] goto there; // TODO: only noreturn, alignas and carries_dependency are parsed in C++ 11 syntax at the moment, hence no warning here |
| [[noinline]] there: // TODO: only noreturn, alignas and carries_dependency are parsed in C++ 11 syntax at the moment, hence no warning here |
| |
| [[lock_returned]] try { // TODO: only noreturn, alignas and carries_dependency are parsed in C++ 11 syntax at the moment, hence no warning here |
| } catch (...) { |
| } |
| |
| [[weakref]] return; // TODO: only noreturn, alignas and carries_dependency are parsed in C++ 11 syntax at the moment, hence no warning here |
| } |