| # 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 common 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. |
| |
| # Deny rule to apply to Rust keywords, see fxbug.dev/60219 |
| RUST_KEYWORD = [ |
| Deny( |
| bindings=['rust'], |
| uses=[ |
| 'method.names', |
| 'table.fields', |
| 'method.request.arguments', |
| 'method.response.arguments', |
| 'method.event.arguments', |
| ]) |
| ] |
| |
| IDENTIFIERS = [ |
| Identifier('abstract', RUST_KEYWORD), |
| Identifier('alignas'), |
| Identifier('alignof'), |
| Identifier('and'), |
| Identifier('and_eq'), |
| Identifier('as', RUST_KEYWORD), |
| Identifier('asm'), |
| Identifier('assert'), |
| Identifier('async', RUST_KEYWORD), |
| Identifier('atomic_cancel'), |
| Identifier('atomic_commit'), |
| Identifier('atomic_noexcept'), |
| Identifier('auto'), |
| Identifier('await', RUST_KEYWORD), |
| Identifier('become', RUST_KEYWORD), |
| Identifier('bitand'), |
| Identifier('bitor'), |
| Identifier('bool'), |
| Identifier('box', RUST_KEYWORD), |
| Identifier('break', RUST_KEYWORD), |
| Identifier('byte'), |
| Identifier('bytes'), |
| Identifier('case'), |
| Identifier('catch'), |
| Identifier('chan'), |
| Identifier('char'), |
| Identifier('char16_t'), |
| Identifier('char32_t'), |
| Identifier('class'), |
| Identifier('co_await'), |
| Identifier('co_return'), |
| Identifier('co_yield'), |
| Identifier('coding_traits'), |
| Identifier('compl'), |
| Identifier('concept'), |
| Identifier('const', RUST_KEYWORD), |
| Identifier('const_cast'), |
| Identifier('constexpr'), |
| Identifier('continue', RUST_KEYWORD), |
| Identifier('controller'), |
| Identifier('covariant'), |
| Identifier('crate', RUST_KEYWORD), |
| Identifier('decltype'), |
| Identifier('decodable'), |
| Identifier( |
| 'decoder' |
| ), # TODO(fxbug.dev/8081) [Deny(uses=['union.names'], styles=['lower'])]), |
| Identifier('default'), |
| Identifier('defer'), |
| Identifier('deferred'), |
| Identifier('delete'), |
| Identifier('do', RUST_KEYWORD), |
| Identifier('double'), |
| Identifier('dynamic'), |
| Identifier('dynamic_cast'), |
| Identifier('else', RUST_KEYWORD), |
| Identifier('encodable'), |
| Identifier('encoder'), |
| Identifier('ensure_values_instantiated'), |
| Identifier('enum', RUST_KEYWORD), |
| Identifier('empty'), |
| Identifier('err'), |
| Identifier('explicit'), |
| Identifier('export'), |
| Identifier('extends'), |
| Identifier('extern', RUST_KEYWORD), |
| Identifier('external'), |
| Identifier('factory'), |
| Identifier('fallthrough'), |
| Identifier('false', RUST_KEYWORD), |
| Identifier('fidl'), |
| Identifier('fidl_type'), |
| Identifier('final', RUST_KEYWORD), |
| Identifier('finally'), |
| Identifier('float'), |
| Identifier('fn', RUST_KEYWORD), |
| Identifier('for', RUST_KEYWORD), |
| Identifier('friend'), |
| Identifier('func'), |
| Identifier('future'), |
| Identifier('futures'), |
| Identifier('get'), |
| Identifier('go'), |
| Identifier('goto'), |
| Identifier('has_invalid_tag'), |
| Identifier('hash_code'), |
| Identifier('if', RUST_KEYWORD), |
| Identifier('impl', RUST_KEYWORD), |
| Identifier('implements'), |
| Identifier('import'), |
| Identifier('in', RUST_KEYWORD), |
| Identifier('index'), |
| Identifier('inline'), |
| Identifier('int'), |
| Identifier('int16'), |
| Identifier('int32'), |
| Identifier('int64'), |
| Identifier('int8'), |
| Identifier('interface'), |
| Identifier('internal_tag'), |
| Identifier('is'), |
| Identifier('let', RUST_KEYWORD), |
| Identifier('lhs'), |
| Identifier('library'), |
| Identifier('list'), |
| Identifier('long'), |
| Identifier('loop', RUST_KEYWORD), |
| Identifier('macro', RUST_KEYWORD), |
| Identifier('map'), |
| Identifier('match', RUST_KEYWORD), |
| Identifier('mixin'), |
| Identifier('mod', RUST_KEYWORD), |
| Identifier('module'), |
| Identifier('move', RUST_KEYWORD), |
| Identifier('mut', RUST_KEYWORD), |
| Identifier('mutable'), |
| Identifier('namespace'), |
| Identifier('never'), |
| Identifier('new', [Deny(bindings=['rust'], uses=['method.names'])]), |
| Identifier('no_such_method'), |
| Identifier('noexcept'), |
| Identifier('none'), |
| Identifier('not'), |
| Identifier('not_eq'), |
| Identifier('null'), |
| Identifier('nullptr'), |
| Identifier('num'), |
| Identifier('object'), |
| Identifier('offset', [Deny(bindings=['rust'])]), |
| Identifier('offsetof'), |
| Identifier('ok'), |
| Identifier('on_open'), |
| Identifier('operator'), |
| Identifier('option'), |
| Identifier('or'), |
| Identifier('or_eq'), |
| Identifier('override', RUST_KEYWORD), |
| Identifier('package'), |
| Identifier('part'), |
| Identifier('priv', RUST_KEYWORD), |
| Identifier('private'), |
| Identifier('proc'), |
| Identifier('protected'), |
| Identifier('proxy'), |
| Identifier('pub', RUST_KEYWORD), |
| Identifier('public'), |
| Identifier('pure'), |
| Identifier('range'), |
| Identifier('ref', RUST_KEYWORD), |
| Identifier('register'), |
| Identifier('reinterpret_cast'), |
| Identifier('requires'), |
| Identifier('result'), |
| Identifier('rethrow'), |
| Identifier('return', RUST_KEYWORD), |
| Identifier('rhs'), |
| Identifier('rune'), |
| Identifier('runtime_type'), |
| Identifier('select'), |
| Identifier( |
| 'self', RUST_KEYWORD + [ |
| Deny( |
| bindings=['rust'], |
| styles=['upper'], |
| uses=['event.names', 'enums']) |
| ]), |
| Identifier('send'), |
| Identifier('set'), |
| Identifier('set_controller'), |
| Identifier('short'), |
| Identifier('signed'), |
| Identifier('sizeof'), |
| Identifier('some'), |
| Identifier('static', RUST_KEYWORD), |
| Identifier('static_assert'), |
| Identifier('static_cast'), |
| Identifier('stream'), |
| Identifier('string'), |
| Identifier('struct', RUST_KEYWORD), |
| Identifier('stub'), |
| Identifier('super', RUST_KEYWORD), |
| Identifier('switch'), |
| Identifier('synchronized'), |
| Identifier('template'), |
| Identifier('this'), |
| Identifier('thread_local'), |
| Identifier('throw'), |
| Identifier('to_string'), |
| Identifier('trait', RUST_KEYWORD), |
| Identifier('true', RUST_KEYWORD), |
| Identifier('try', RUST_KEYWORD), |
| Identifier('type', RUST_KEYWORD), |
| Identifier('typedef'), |
| Identifier('typeid'), |
| Identifier('typename'), |
| Identifier('typeof', RUST_KEYWORD), |
| Identifier('uint16'), |
| # We use uint32 as a type in some tests which makes it conflict. |
| # See also: fxbug.dev/38124 fxbug.dev/8042) |
| Identifier( |
| 'uint32', |
| [ |
| Deny( |
| styles=['lower'], |
| uses=[ |
| 'constants', |
| 'struct.types', |
| 'table.names', # TODO(fxbug.dev/8081) 'union.names' |
| ]) |
| ]), |
| Identifier('uint64'), |
| Identifier('uint8'), |
| Identifier('union'), |
| Identifier('unknown'), |
| Identifier('unknown_bytes'), |
| # TODO(fxb/60495): Remedy identifier clashes. |
| Identifier('unknown_data', [Deny(bindings=['dart', 'rust'])]), |
| Identifier('unsafe', RUST_KEYWORD), |
| Identifier('unsigned'), |
| Identifier('unsized', RUST_KEYWORD), |
| Identifier('use', RUST_KEYWORD), |
| Identifier('using'), |
| Identifier('value'), |
| Identifier('value_of'), |
| Identifier('value_union'), |
| Identifier('values_map'), |
| Identifier('var'), |
| Identifier('vec'), |
| Identifier('virtual', RUST_KEYWORD), |
| Identifier('void'), |
| Identifier('volatile'), |
| Identifier('wchar_t'), |
| Identifier('where', RUST_KEYWORD), |
| Identifier('which'), |
| Identifier('while', RUST_KEYWORD), |
| Identifier('with'), |
| Identifier('xor'), |
| Identifier('xor_eq'), |
| Identifier('xunion'), |
| Identifier('yield', RUST_KEYWORD), |
| Identifier('zx'), |
| ] |