blob: 708920f01d057200124f41d639e115d91ff29c86 [file] [log] [blame]
# Copyright 2020 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
__all__ = ['IDENTIFIERS']
from generate.types import Identifier, Deny
# These are keywords and identifiers 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 identifier has lower_camel_case name, a tag (used to maintain source
# stability when adding identifiers) and optionally a deny list.
#
# The deny list members specify a list of styles, uses and bindings to deny.
# The bindings list is used to decide whether to include certain identifiers
# in the generated fidl files. If a bindings list is included then a
# [BindingsDenyList] attribute will be used, if not then the identifier will
# be entirely ommitted from the affected contexts.
IDENTIFIERS = [
Identifier('abstract', 1),
Identifier('alignas', 2),
Identifier('alignof', 3),
Identifier('and', 4),
Identifier('and_eq', 5),
Identifier('as', 6),
Identifier('asm', 7),
Identifier('assert', 8),
Identifier('async', 9),
Identifier('atomic_cancel', 10),
Identifier('atomic_commit', 11),
Identifier('atomic_noexcept', 12),
Identifier('auto', 13),
Identifier('await', 14),
Identifier('become', 15),
Identifier('bitand', 16),
Identifier('bitor', 17),
Identifier('bool', 18),
Identifier('box', 19),
Identifier('break', 20),
Identifier('byte', 21),
Identifier('bytes', 215),
Identifier('case', 22),
Identifier('catch', 23),
Identifier('chan', 24),
Identifier('char', 25),
Identifier('char16_t', 26),
Identifier('char32_t', 27),
Identifier('class', 28),
Identifier('co_await', 29),
Identifier('co_return', 30),
Identifier('co_yield', 31),
Identifier('coding_traits', 32),
Identifier('compl', 33),
Identifier('concept', 34),
Identifier('const', 35),
Identifier('const_cast', 36),
Identifier('constexpr', 37),
Identifier('continue', 38),
Identifier('controller', 39),
Identifier('covariant', 40),
Identifier('crate', 41),
Identifier('decltype', 42),
Identifier('decoder', 43),
Identifier('default', 44),
Identifier('defer', 45),
Identifier('deferred', 46),
Identifier('delete', 47),
Identifier('do', 48),
Identifier('double', 49),
Identifier('dynamic', 50),
Identifier('dynamic_cast', 51),
Identifier('else', 52),
Identifier('encoder', 53),
Identifier('ensure_values_instantiated', 54),
Identifier('enum', 55),
Identifier('empty', 56),
Identifier('err', 57),
Identifier('explicit', 58),
Identifier('export', 59),
Identifier('extends', 60),
Identifier('extern', 61),
Identifier('external', 62),
Identifier('factory', 63),
Identifier('fallthrough', 64),
Identifier('false', 65),
Identifier('fidl', 66),
Identifier('fidl_type', 67),
Identifier('final', 68),
Identifier('finally', 69),
Identifier('float', 70),
Identifier('fn', 71),
Identifier('for', 72),
Identifier('friend', 73),
Identifier('func', 74),
Identifier('future', 75),
Identifier('futures', 76),
Identifier('get', 77),
Identifier('go', 78),
Identifier('goto', 79),
Identifier('has_invalid_tag', 80),
Identifier('hash_code', 81),
Identifier('if', 82),
Identifier('impl', 83),
Identifier('implements', 84),
Identifier('import', 85),
Identifier('in', 86),
Identifier('index', 87),
Identifier('inline', 88),
Identifier('int', 89),
Identifier('int16', 90),
Identifier('int32', 91),
Identifier('int64', 92),
Identifier('int8', 93),
Identifier('interface', 94),
Identifier('internal_tag', 95),
Identifier('is', 96),
Identifier('let', 97),
Identifier('lhs', 98),
Identifier('library', 99),
Identifier('list', 100),
Identifier('long', 101),
Identifier('loop', 102),
Identifier('macro', 103),
Identifier('map', 104),
Identifier('match', 105),
Identifier('mixin', 106),
Identifier('mod', 107),
Identifier('module', 108),
Identifier('move', 109),
Identifier('mut', 110),
Identifier('mutable', 111),
Identifier('namespace', 112),
Identifier('never', 113),
Identifier('new', 114),
Identifier('no_such_method', 115),
Identifier('noexcept', 116),
Identifier('none', 117),
Identifier('not', 118),
Identifier('not_eq', 119),
Identifier('null', 120),
Identifier('nullptr', 121),
Identifier('num', 122),
Identifier('object', 123),
Identifier('offset', 124),
Identifier('offsetof', 125),
Identifier('ok', 126),
Identifier('on_open', 127),
Identifier('operator', 128),
Identifier('option', 129),
Identifier('or', 130),
Identifier('or_eq', 131),
Identifier('override', 132),
Identifier('package', 133),
Identifier('part', 134),
Identifier('priv', 135),
Identifier('private', 136),
Identifier('proc', 137),
Identifier('protected', 138),
Identifier('proxy', 139),
Identifier('pub', 140),
Identifier('public', 141),
Identifier('pure', 142),
Identifier('range', 143),
Identifier('ref', 144),
Identifier('register', 145),
Identifier('reinterpret_cast', 146),
Identifier('requires', 147),
Identifier('result', 148),
Identifier('rethrow', 149),
Identifier('return', 150),
Identifier('rhs', 151),
Identifier('rune', 152),
Identifier('runtime_type', 153),
Identifier('select', 154),
Identifier('self', 155),
Identifier('send', 156),
Identifier('set', 157),
Identifier('set_controller', 158),
Identifier('short', 159),
Identifier('signed', 160),
Identifier('sizeof', 161),
Identifier('some', 162),
Identifier('static', 163),
Identifier('static_assert', 164),
Identifier('static_cast', 165),
Identifier('stream', 166),
Identifier('string', 167),
Identifier('struct', 168),
Identifier('stub', 169),
Identifier('super', 170),
Identifier('switch', 171),
Identifier('synchronized', 172),
Identifier('template', 173),
Identifier('this', 174),
Identifier('thread_local', 175),
Identifier('throw', 176),
Identifier('to_string', 177),
Identifier('trait', 178),
Identifier('true', 179),
Identifier('try', 180),
Identifier('type', 181),
Identifier('typedef', 182),
Identifier('typeid', 183),
Identifier('typename', 184),
Identifier('typeof', 185),
Identifier('uint16', 186),
# We use uint32 as a type in some tests which makes it conflict.
# See also: fxbug.dev/38124 fxbug.dev/8042)
Identifier(
'uint32', 187, [
Deny(
styles=['lower'],
uses=['constants', 'struct.types', 'table.names'])
]),
Identifier('uint64', 188),
Identifier('uint8', 189),
Identifier('union', 190),
Identifier('unknown', 216),
Identifier('unknown_bytes', 217),
# TODO(fxb/60495): Remedy identifier clashes.
Identifier('unknown_data', 218, [Deny(bindings=['dart'])]),
Identifier('unsafe', 191),
Identifier('unsigned', 192),
Identifier('unsized', 193),
Identifier('use', 194),
Identifier('using', 195),
Identifier('value', 196),
Identifier('value_of', 197),
Identifier('value_union', 198),
Identifier('values_map', 199),
Identifier('var', 200),
Identifier('vec', 201),
Identifier('virtual', 202),
Identifier('void', 203),
Identifier('volatile', 204),
Identifier('wchar_t', 205),
Identifier('where', 206),
Identifier('which', 207),
Identifier('while', 208),
Identifier('with', 209),
Identifier('xor', 210),
Identifier('xor_eq', 211),
Identifier('xunion', 212),
Identifier('yield', 213),
Identifier('zx', 214),
]