diff options
Diffstat (limited to 'generate_rust.cpp')
-rw-r--r-- | generate_rust.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/generate_rust.cpp b/generate_rust.cpp index c7510059..e5a27594 100644 --- a/generate_rust.cpp +++ b/generate_rust.cpp @@ -310,6 +310,13 @@ void GenerateServerItems(CodeWriter& out, const AidlInterface* iface, out << "}\n"; } +template <typename Type> +void GenerateDeprecated(CodeWriter& out, const Type& type) { + if (type.IsDeprecated()) { + out << "#[deprecated]\n"; + } +} + template <typename TypeWithConstants> void GenerateConstantDeclarations(CodeWriter& out, const TypeWithConstants& type, const AidlTypenames& typenames) { @@ -327,6 +334,7 @@ void GenerateConstantDeclarations(CodeWriter& out, const TypeWithConstants& type AIDL_FATAL(value) << "Unrecognized constant type: " << type.Signature(); } + GenerateDeprecated(out, *constant); out << "pub const " << constant->GetName() << ": " << const_type << " = " << constant->ValueString(ConstantValueDecoratorRef) << ";\n"; } @@ -372,6 +380,7 @@ bool GenerateRustInterface(const string& filename, const AidlInterface* iface, code_writer->Dedent(); *code_writer << "}\n"; + GenerateDeprecated(*code_writer, *iface); *code_writer << "pub trait " << trait_name << ": binder::Interface + Send {\n"; code_writer->Indent(); *code_writer << "fn get_descriptor() -> &'static str where Self: Sized { \"" @@ -379,6 +388,7 @@ bool GenerateRustInterface(const string& filename, const AidlInterface* iface, for (const auto& method : iface->GetMethods()) { // Generate the method + GenerateDeprecated(*code_writer, *method); *code_writer << BuildMethod(*method, typenames) << " {\n"; code_writer->Indent(); if (method->IsUserDefined()) { @@ -467,9 +477,11 @@ bool GenerateRustInterface(const string& filename, const AidlInterface* iface, void GenerateParcelBody(CodeWriter& out, const AidlStructuredParcelable* parcel, const AidlTypenames& typenames) { + GenerateDeprecated(out, *parcel); out << "pub struct " << parcel->GetName() << " {\n"; out.Indent(); for (const auto& variable : parcel->GetFields()) { + GenerateDeprecated(out, *variable); auto field_type = RustNameOf(variable->GetType(), typenames, StorageMode::PARCELABLE_FIELD); out << "pub " << variable->GetName() << ": " << field_type << ",\n"; } @@ -547,9 +559,11 @@ void GenerateParcelDeserializeBody(CodeWriter& out, const AidlStructuredParcelab void GenerateParcelBody(CodeWriter& out, const AidlUnionDecl* parcel, const AidlTypenames& typenames) { + GenerateDeprecated(out, *parcel); out << "pub enum " << parcel->GetName() << " {\n"; out.Indent(); for (const auto& variable : parcel->GetFields()) { + GenerateDeprecated(out, *variable); auto field_type = RustNameOf(variable->GetType(), typenames, StorageMode::PARCELABLE_FIELD); out << variable->GetCapitalizedName() << "(" << field_type << "),\n"; } @@ -726,6 +740,7 @@ bool GenerateRustEnumDeclaration(const string& filename, const AidlEnumDeclarati const auto& aidl_backing_type = enum_decl->GetBackingType(); auto backing_type = RustNameOf(aidl_backing_type, typenames, StorageMode::VALUE); + // TODO(b/174514415) support "deprecated" for enum types *code_writer << "#![allow(non_upper_case_globals)]\n"; *code_writer << "use binder::declare_binder_enum;\n"; *code_writer << "declare_binder_enum! { " << enum_decl->GetName() << " : " << backing_type |