Generate wire and data model API shims
This commit is contained in:
@@ -590,6 +590,8 @@ def member_signature(mapper: Mapper, owner: dict, item: dict, rust_name: str) ->
|
||||
if kind == "enum_value":
|
||||
signature = f"{rust_name}: {value_type}"
|
||||
elif kind == "constant":
|
||||
if item["type"] == "System.String":
|
||||
value_type = "&'static str"
|
||||
signature = f"pub const {rust_name}: {value_type}"
|
||||
elif item.get("static"):
|
||||
signature = f"pub fn {rust_name}() -> {value_type}"
|
||||
@@ -665,6 +667,16 @@ def build_member_rows(catalog: dict, mapper: Mapper) -> list[dict[str, str]]:
|
||||
for owner in assembly["types"]:
|
||||
_, module, owner_path = declared_type_path(assembly_name, owner)
|
||||
groups = Counter(member_base_name(member) for member in owner["members"])
|
||||
synthetic_names = {
|
||||
f"set_{member_base_name(member)}"
|
||||
for member in owner["members"]
|
||||
if member["kind"] in {"property", "indexer"}
|
||||
and any(accessor["kind"] == "set" for accessor in member.get("accessors", []))
|
||||
} | {
|
||||
f"subscribe_{member_base_name(member)}"
|
||||
for member in owner["members"]
|
||||
if member["kind"] == "event"
|
||||
}
|
||||
enum_values = [member.get("value", {}).get("value") for member in owner["members"] if member["kind"] == "enum_value"]
|
||||
enum_constants = owner["kind"] == "enum" and (
|
||||
any(attribute["type"] == "System.FlagsAttribute" for attribute in owner.get("attributes", []))
|
||||
@@ -677,7 +689,7 @@ def build_member_rows(catalog: dict, mapper: Mapper) -> list[dict[str, str]]:
|
||||
base_name = snake(item["name"]).upper()
|
||||
rust_name = base_name
|
||||
decision = "direct_snake_case"
|
||||
if groups[base_name] > 1:
|
||||
if groups[base_name] > 1 or (item["kind"] == "method" and base_name in synthetic_names):
|
||||
suffixes = []
|
||||
for parameter in item.get("parameters", []):
|
||||
suffixes.append(parameter_slug(parameter["type"]))
|
||||
|
||||
Reference in New Issue
Block a user