mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-25 01:26:04 +00:00

This tries to fix all of the places where a diagnostic message starts with a capital letter (other than acroynyms or proper nouns) or ends with punctuation (other than a question mark). This is in support of a planned change to tablegen to start diagnosing incorrect diagnostic message styles.
71 lines
2.3 KiB
C++
71 lines
2.3 KiB
C++
// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify %s
|
|
|
|
#include "Inputs/std-coroutine.h"
|
|
|
|
struct resumable {
|
|
struct promise_type {
|
|
resumable get_return_object() { return {}; }
|
|
auto initial_suspend() { return std::suspend_always(); }
|
|
auto final_suspend() noexcept { return std::suspend_always(); }
|
|
void unhandled_exception() {}
|
|
void return_void(){};
|
|
};
|
|
};
|
|
|
|
resumable f1(int &out, int *inst) {
|
|
static void* dispatch_table[] = {&&inc, // expected-error {{the GNU address of label extension is not allowed in coroutines}}
|
|
&&suspend, // expected-error {{the GNU address of label extension is not allowed in coroutines}}
|
|
&&stop}; // expected-error {{the GNU address of label extension is not allowed in coroutines}}
|
|
#define DISPATCH() goto *dispatch_table[*inst++]
|
|
inc:
|
|
out++;
|
|
DISPATCH();
|
|
|
|
suspend:
|
|
co_await std::suspend_always{};
|
|
DISPATCH();
|
|
|
|
stop:
|
|
co_return;
|
|
}
|
|
|
|
resumable f2(int &out, int *inst) {
|
|
void* dispatch_table[] = {nullptr, nullptr, nullptr};
|
|
dispatch_table[0] = &&inc; // expected-error {{the GNU address of label extension is not allowed in coroutines}}
|
|
dispatch_table[1] = &&suspend; // expected-error {{the GNU address of label extension is not allowed in coroutines}}
|
|
dispatch_table[2] = &&stop; // expected-error {{the GNU address of label extension is not allowed in coroutines}}
|
|
#define DISPATCH() goto *dispatch_table[*inst++]
|
|
inc:
|
|
out++;
|
|
DISPATCH();
|
|
|
|
suspend:
|
|
co_await std::suspend_always{};
|
|
DISPATCH();
|
|
|
|
stop:
|
|
co_return;
|
|
}
|
|
|
|
resumable f3(int &out, int *inst) {
|
|
void* dispatch_table[] = {nullptr, nullptr, nullptr};
|
|
[&]() -> resumable {
|
|
dispatch_table[0] = &&inc; // expected-error {{the GNU address of label extension is not allowed in coroutines}}
|
|
dispatch_table[1] = &&suspend; // expected-error {{the GNU address of label extension is not allowed in coroutines}}
|
|
dispatch_table[2] = &&stop; // expected-error {{the GNU address of label extension is not allowed in coroutines}}
|
|
#define DISPATCH() goto *dispatch_table[*inst++]
|
|
inc:
|
|
out++;
|
|
DISPATCH();
|
|
|
|
suspend:
|
|
co_await std::suspend_always{};
|
|
DISPATCH();
|
|
|
|
stop:
|
|
co_return;
|
|
}();
|
|
|
|
co_return;
|
|
}
|