From 7842b174b202ed243a71582ca069a472a5cc7b64 Mon Sep 17 00:00:00 2001 From: levlam Date: Fri, 22 Nov 2019 18:48:03 +0300 Subject: [PATCH] Do not generate empty constructor for functions. GitOrigin-RevId: 9a83f40616728dd814ca4ce5424b955b17ca4dfe --- td/generate/tl_writer_td.cpp | 4 ++-- td/generate/tl_writer_td.h | 2 +- tdtl/td/tl/tl_generate.cpp | 4 ++-- tdtl/td/tl/tl_writer.cpp | 2 +- tdtl/td/tl/tl_writer.h | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/td/generate/tl_writer_td.cpp b/td/generate/tl_writer_td.cpp index 05195754..5ce3562e 100644 --- a/td/generate/tl_writer_td.cpp +++ b/td/generate/tl_writer_td.cpp @@ -49,8 +49,8 @@ bool TD_TL_writer::is_combinator_supported(const tl::tl_combinator *constructor) return true; } -bool TD_TL_writer::is_default_constructor_generated(const tl::tl_combinator *t) const { - return tl_name == "td_api" || tl_name == "TdApi" || t->var_count > 0; +bool TD_TL_writer::is_default_constructor_generated(const tl::tl_combinator *t, bool is_function) const { + return tl_name == "td_api" || tl_name == "TdApi" || (t->var_count > 0 && !is_function); } int TD_TL_writer::get_storer_type(const tl::tl_combinator *t, const std::string &storer_name) const { diff --git a/td/generate/tl_writer_td.h b/td/generate/tl_writer_td.h index c8d59517..4f495be7 100644 --- a/td/generate/tl_writer_td.h +++ b/td/generate/tl_writer_td.h @@ -35,7 +35,7 @@ class TD_TL_writer : public tl::TL_writer { bool is_built_in_complex_type(const std::string &name) const override; bool is_type_bare(const tl::tl_type *t) const override; bool is_combinator_supported(const tl::tl_combinator *constructor) const override; - bool is_default_constructor_generated(const tl::tl_combinator *t) const override; + bool is_default_constructor_generated(const tl::tl_combinator *t, bool is_function) const override; int get_storer_type(const tl::tl_combinator *t, const std::string &storer_name) const override; Mode get_parser_mode(int type) const override; diff --git a/tdtl/td/tl/tl_generate.cpp b/tdtl/td/tl/tl_generate.cpp index 8660b64e..a417d0e8 100644 --- a/tdtl/td/tl/tl_generate.cpp +++ b/tdtl/td/tl/tl_generate.cpp @@ -253,7 +253,7 @@ static void write_function(tl_outputer &out, const tl_combinator *t, const std:: std::vector vars(t->var_count); out.append(w.gen_function_vars(t, vars)); - if (w.is_default_constructor_generated(t)) { + if (w.is_default_constructor_generated(t, true)) { write_class_constructor(out, t, class_name, true, w); } if (required_args) { @@ -306,7 +306,7 @@ static void write_constructor(tl_outputer &out, const tl_combinator *t, const st int required_args = gen_field_definitions(out, t, class_name, w); out.append(w.gen_flags_definitions(t)); - if (w.is_default_constructor_generated(t)) { + if (w.is_default_constructor_generated(t, false)) { write_class_constructor(out, t, class_name, true, w); } if (required_args) { diff --git a/tdtl/td/tl/tl_writer.cpp b/tdtl/td/tl/tl_writer.cpp index 0a9131ec..83996747 100644 --- a/tdtl/td/tl/tl_writer.cpp +++ b/tdtl/td/tl/tl_writer.cpp @@ -135,7 +135,7 @@ bool TL_writer::is_documentation_generated() const { return false; } -bool TL_writer::is_default_constructor_generated(const tl_combinator *t) const { +bool TL_writer::is_default_constructor_generated(const tl_combinator *t, bool is_function) const { return true; } diff --git a/tdtl/td/tl/tl_writer.h b/tdtl/td/tl/tl_writer.h index f1c7ebeb..e71c53d3 100644 --- a/tdtl/td/tl/tl_writer.h +++ b/tdtl/td/tl/tl_writer.h @@ -56,7 +56,7 @@ class TL_writer { virtual bool is_type_bare(const tl_type *t) const = 0; virtual bool is_combinator_supported(const tl_combinator *constructor) const; virtual bool is_documentation_generated() const; - virtual bool is_default_constructor_generated(const tl_combinator *t) const; + virtual bool is_default_constructor_generated(const tl_combinator *t, bool is_function) const; virtual int get_parser_type(const tl_combinator *t, const std::string &parser_name) const; virtual int get_storer_type(const tl_combinator *t, const std::string &storer_name) const;