blob: d35b7c45d3f9c29b0e9b7501427095991195e911 [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 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
# @bindings_denylist attribute will be used, if not then the identifier will
# be entirely omitted from the affected contexts.
# Deny rule to apply to Rust keywords, see https://fxbug.dev/42138375
RUST_KEYWORD = [
Deny(
bindings=["rust"],
uses=[
"method.names",
"method.event.arguments",
"method.request.arguments",
"method.response.arguments",
"service.member.names",
"table.fields",
"struct.names",
],
)
]
# Deny rule to apply to FIDL primitives.
FIDL_PRIMITIVE = [
Deny(
styles=["lower"],
uses=[
"service.member.types", # FIDL compiler disallows primitives here.
],
)
]
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", FIDL_PRIMITIVE),
# TODO(https://fxbug.dev/42157590): this can be re-enabled once builtin shadowing works.
# Identifier('box', RUST_KEYWORD),
Identifier("break", RUST_KEYWORD),
Identifier("byte", FIDL_PRIMITIVE),
Identifier("bytes", FIDL_PRIMITIVE),
Identifier("case"),
Identifier("catch"),
Identifier("chan"),
Identifier("char"),
Identifier("char16_t"),
Identifier("char32_t"),
Identifier("class"),
Identifier("clone"),
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),
# TODO(https://fxbug.dev/42145610): Fix in Rust.
Identifier("control_handle", [Deny(bindings=["rust"])]),
Identifier("controller"),
Identifier("covariant"),
Identifier("crate", RUST_KEYWORD),
Identifier("decltype"),
Identifier("decodable"),
Identifier(
"decoder"
), # TODO(https://fxbug.dev/42161195) [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"),
# TODO(https://fxbug.dev/42157590)
# 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("frame"),
Identifier("friend"),
Identifier("func"),
Identifier("future"),
Identifier("futures"),
Identifier("get"),
Identifier("go"),
Identifier("goto"),
Identifier("handles"),
Identifier("has_invalid_tag"),
Identifier("hash_code"),
Identifier("header"),
Identifier("if", RUST_KEYWORD),
Identifier("impl", RUST_KEYWORD),
Identifier("implements"),
Identifier("import"),
Identifier("in", RUST_KEYWORD),
Identifier("index"),
Identifier("inline"),
Identifier("int"),
Identifier("int16", FIDL_PRIMITIVE),
Identifier("int32", FIDL_PRIMITIVE),
Identifier("int64", FIDL_PRIMITIVE),
Identifier("int8", FIDL_PRIMITIVE),
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"),
# TODO(https://fxbug.dev/42145610): Fix in Rust.
Identifier("responder", [Deny(bindings=["rust"])]),
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",
FIDL_PRIMITIVE
+ [
# TODO(https://fxbug.dev/42145610): Need to escape "String" in Rust.
Deny(
bindings=["rust"],
styles=["upper", "camel"],
uses=["using"],
)
],
),
Identifier("struct", RUST_KEYWORD),
Identifier("stub"),
Identifier("stderr"),
Identifier("stdin"),
Identifier("stdout"),
Identifier("super", RUST_KEYWORD),
Identifier("switch"),
Identifier("synchronized"),
Identifier("template"),
Identifier("this"),
Identifier("thread_local"),
Identifier("throw"),
Identifier("to_string"),
Identifier("trait", RUST_KEYWORD),
# TODO(https://fxbug.dev/42157590)
# Identifier('true', RUST_KEYWORD),
Identifier("try", RUST_KEYWORD),
Identifier("type", RUST_KEYWORD),
Identifier("typedef"),
Identifier("typeid"),
Identifier("typename"),
Identifier("typeof", RUST_KEYWORD),
Identifier("uint16", FIDL_PRIMITIVE),
# We use uint32 as a type in some tests which makes it conflict.
# See also: https://fxbug.dev/42113840 https://fxbug.dev/42160762)
Identifier(
"uint32",
[
Deny(
styles=["lower"],
uses=[
"constants",
"service.member.types", # FIDL compiler disallows primitives here.
"struct.types",
"table.names", # TODO(https://fxbug.dev/42161195) 'union.names'
],
)
],
),
Identifier("uint64", FIDL_PRIMITIVE),
Identifier("uint8", FIDL_PRIMITIVE),
Identifier("union"),
Identifier("unknown"),
Identifier("unknown_bytes"),
# TODO(https://fxbug.dev/42138681): 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"),
]