# These are keywords used in languages we support and in generated bindings.
# This list is maintained by hand and should be expanded to cover as many cases
# as we can think of.
#
# Each line is either a comment prefixed with # or a lower_camel_case identifier
abstract
alignas
alignof
and
and_eq
as
asm
assert
async
atomic_cancel
atomic_commit
atomic_noexcept
auto
await
become
bitand
bitor
bool
box
break
byte
case
catch
chan
char
char16_t
char32_t
class
# clone
co_await
co_return
co_yield
coding_traits
compl
concept
const
const_cast
constexpr
continue
controller
covariant
crate
decltype
decoder
default
defer
deferred
delete
do
double
dynamic
dynamic_cast
else
encoder
ensure_values_instantiated
enum
err
explicit
export
extends
extern
external
factory
fallthrough
false
fidl
fidl_type
final
finally
float
fn
for
friend
func
future
futures
get
go
goto
has_invalid_tag
hash_code
if
impl
implements
import
in
index
inline
int
int16
int32
int64
int8
interface
is
let
lhs
library
list
long
loop
macro
map
match
mixin
mod
module
move
mut
mutable
namespace
never
new
no_such_method
noexcept
none
not
not_eq
null
nullptr
num
object
offset
offsetof
ok
on_open
operator
option
or
or_eq
override
package
part
priv
private
proc
protected
proxy
pub
public
pure
range
ref
register
reinterpret_cast
requires
result
rethrow
return
rhs
rune
runtime_type
select
self
send
set
set_controller
short
signed
sizeof
some
static
static_assert
static_cast
stream
string
struct
stub
super
switch
synchronized
# tag
template
this
thread_local
throw
to_string
trait
true
try
type
typedef
typeid
typename
typeof
uint16
uint32
uint64
uint8
union
unsafe
unsigned
unsized
use
using
value
value_of
value_union
#values
values_map
var
vec
virtual
void
volatile
wchar_t
where
which
while
with
xor
xor_eq
xunion
yield
zx
