From eb4c85a7978a978f99940f7b1a1b053d991fc2c8 Mon Sep 17 00:00:00 2001 From: levlam Date: Wed, 26 Sep 2018 03:54:37 +0300 Subject: [PATCH] Fix CE. GitOrigin-RevId: 0bb7986447b8c9fcdc80b8caf1feb03f8a945d90 --- td/generate/tl_writer_c.h | 2 +- td/generate/tl_writer_cpp.cpp | 7 +++++-- td/generate/tl_writer_cpp.h | 2 +- td/generate/tl_writer_dotnet.h | 2 +- td/generate/tl_writer_h.cpp | 3 ++- td/generate/tl_writer_h.h | 2 +- td/generate/tl_writer_hpp.cpp | 3 ++- td/generate/tl_writer_hpp.h | 2 +- td/generate/tl_writer_java.cpp | 3 ++- td/generate/tl_writer_java.h | 2 +- td/generate/tl_writer_jni_cpp.cpp | 6 ++++-- td/generate/tl_writer_jni_cpp.h | 2 +- td/telegram/cli.cpp | 4 ++-- tdtl/td/tl/tl_generate.cpp | 10 +++++----- tdtl/td/tl/tl_writer.h | 2 +- 15 files changed, 30 insertions(+), 22 deletions(-) diff --git a/td/generate/tl_writer_c.h b/td/generate/tl_writer_c.h index 22732d98..f593d254 100644 --- a/td/generate/tl_writer_c.h +++ b/td/generate/tl_writer_c.h @@ -1033,7 +1033,7 @@ class TlWriterCCommon : public tl::TL_writer { std::vector &vars, int parser_type) const override { return ""; } - std::string gen_fetch_function_end(int field_num, const std::vector &vars, + std::string gen_fetch_function_end(bool has_parent, int field_num, const std::vector &vars, int parser_type) const override { return ""; } diff --git a/td/generate/tl_writer_cpp.cpp b/td/generate/tl_writer_cpp.cpp index e6b70595..b2fc840e 100644 --- a/td/generate/tl_writer_cpp.cpp +++ b/td/generate/tl_writer_cpp.cpp @@ -534,7 +534,8 @@ std::string TD_TL_writer_cpp::gen_fetch_function_begin(const std::string &parser (parser_type == -1 ? "" : " " + fetched_type + "res = make_tl_object<" + class_name + ">();\n"); } -std::string TD_TL_writer_cpp::gen_fetch_function_end(int field_num, const std::vector &vars, +std::string TD_TL_writer_cpp::gen_fetch_function_end(bool has_parent, int field_num, + const std::vector &vars, int parser_type) const { for (std::size_t i = 0; i < vars.size(); i++) { assert(vars[i].is_stored); @@ -552,7 +553,9 @@ std::string TD_TL_writer_cpp::gen_fetch_function_end(int field_num, const std::v } return " if (p.get_error()) { FAIL(\"\"); }\n" - " return res;\n" + " return " + + std::string(has_parent ? "std::move(res)" : "res") + + ";\n" "#undef FAIL\n" "}\n"; } diff --git a/td/generate/tl_writer_cpp.h b/td/generate/tl_writer_cpp.h index f14e6a6d..4e5f90f3 100644 --- a/td/generate/tl_writer_cpp.h +++ b/td/generate/tl_writer_cpp.h @@ -79,7 +79,7 @@ class TD_TL_writer_cpp : public TD_TL_writer { std::string gen_fetch_function_begin(const std::string &parser_name, const std::string &class_name, const std::string &parent_class_name, int arity, std::vector &vars, int parser_type) const override; - std::string gen_fetch_function_end(int field_num, const std::vector &vars, + std::string gen_fetch_function_end(bool has_parent, int field_num, const std::vector &vars, int parser_type) const override; std::string gen_fetch_function_result_begin(const std::string &parser_name, const std::string &class_name, diff --git a/td/generate/tl_writer_dotnet.h b/td/generate/tl_writer_dotnet.h index 25f9a5f7..32a1f7d2 100644 --- a/td/generate/tl_writer_dotnet.h +++ b/td/generate/tl_writer_dotnet.h @@ -472,7 +472,7 @@ class TlWriterDotNet : public TL_writer { std::vector &vars, int parser_type) const override { return ""; } - std::string gen_fetch_function_end(int field_num, const std::vector &vars, + std::string gen_fetch_function_end(bool has_parent, int field_num, const std::vector &vars, int parser_type) const override { return ""; } diff --git a/td/generate/tl_writer_h.cpp b/td/generate/tl_writer_h.cpp index 17c3871a..879035e0 100644 --- a/td/generate/tl_writer_h.cpp +++ b/td/generate/tl_writer_h.cpp @@ -271,7 +271,8 @@ std::string TD_TL_writer_h::gen_fetch_function_begin(const std::string &parser_n returned_type + "fetch(" + parser_name + " &p);\n"; } -std::string TD_TL_writer_h::gen_fetch_function_end(int field_num, const std::vector &vars, +std::string TD_TL_writer_h::gen_fetch_function_end(bool has_parent, int field_num, + const std::vector &vars, int parser_type) const { return ""; } diff --git a/td/generate/tl_writer_h.h b/td/generate/tl_writer_h.h index fbf8521a..2f9e975e 100644 --- a/td/generate/tl_writer_h.h +++ b/td/generate/tl_writer_h.h @@ -65,7 +65,7 @@ class TD_TL_writer_h : public TD_TL_writer { std::string gen_fetch_function_begin(const std::string &parser_name, const std::string &class_name, const std::string &parent_class_name, int arity, std::vector &vars, int parser_type) const override; - std::string gen_fetch_function_end(int field_num, const std::vector &vars, + std::string gen_fetch_function_end(bool has_parent, int field_num, const std::vector &vars, int parser_type) const override; std::string gen_fetch_function_result_begin(const std::string &parser_name, const std::string &class_name, diff --git a/td/generate/tl_writer_hpp.cpp b/td/generate/tl_writer_hpp.cpp index 4af8f6ef..48875986 100644 --- a/td/generate/tl_writer_hpp.cpp +++ b/td/generate/tl_writer_hpp.cpp @@ -143,7 +143,8 @@ std::string TD_TL_writer_hpp::gen_fetch_function_begin(const std::string &parser return ""; } -std::string TD_TL_writer_hpp::gen_fetch_function_end(int field_num, const std::vector &vars, +std::string TD_TL_writer_hpp::gen_fetch_function_end(bool has_parent, int field_num, + const std::vector &vars, int parser_type) const { return ""; } diff --git a/td/generate/tl_writer_hpp.h b/td/generate/tl_writer_hpp.h index ce4903fd..cd74bca0 100644 --- a/td/generate/tl_writer_hpp.h +++ b/td/generate/tl_writer_hpp.h @@ -66,7 +66,7 @@ class TD_TL_writer_hpp : public TD_TL_writer { std::string gen_fetch_function_begin(const std::string &parser_name, const std::string &class_name, const std::string &parent_class_name, int arity, std::vector &vars, int parser_type) const override; - std::string gen_fetch_function_end(int field_num, const std::vector &vars, + std::string gen_fetch_function_end(bool has_parent, int field_num, const std::vector &vars, int parser_type) const override; std::string gen_fetch_function_result_begin(const std::string &parser_name, const std::string &class_name, diff --git a/td/generate/tl_writer_java.cpp b/td/generate/tl_writer_java.cpp index 82b6065b..5a914db3 100644 --- a/td/generate/tl_writer_java.cpp +++ b/td/generate/tl_writer_java.cpp @@ -351,7 +351,8 @@ std::string TD_TL_writer_java::gen_fetch_function_begin(const std::string &parse return ""; } -std::string TD_TL_writer_java::gen_fetch_function_end(int field_num, const std::vector &vars, +std::string TD_TL_writer_java::gen_fetch_function_end(bool has_parent, int field_num, + const std::vector &vars, int parser_type) const { return ""; } diff --git a/td/generate/tl_writer_java.h b/td/generate/tl_writer_java.h index fb393d01..7b997cd4 100644 --- a/td/generate/tl_writer_java.h +++ b/td/generate/tl_writer_java.h @@ -90,7 +90,7 @@ class TD_TL_writer_java : public tl::TL_writer { std::string gen_fetch_function_begin(const std::string &parser_name, const std::string &class_name, const std::string &parent_class_name, int arity, std::vector &vars, int parser_type) const override; - std::string gen_fetch_function_end(int field_num, const std::vector &vars, + std::string gen_fetch_function_end(bool has_parent, int field_num, const std::vector &vars, int parser_type) const override; std::string gen_fetch_function_result_begin(const std::string &parser_name, const std::string &class_name, diff --git a/td/generate/tl_writer_jni_cpp.cpp b/td/generate/tl_writer_jni_cpp.cpp index 534c94a0..2e437022 100644 --- a/td/generate/tl_writer_jni_cpp.cpp +++ b/td/generate/tl_writer_jni_cpp.cpp @@ -399,7 +399,8 @@ std::string TD_TL_writer_jni_cpp::gen_fetch_function_begin(const std::string &pa fetched_type + "res = make_object<" + class_name + ">();\n"); } -std::string TD_TL_writer_jni_cpp::gen_fetch_function_end(int field_num, const std::vector &vars, +std::string TD_TL_writer_jni_cpp::gen_fetch_function_end(bool has_parent, int field_num, + const std::vector &vars, int parser_type) const { for (std::size_t i = 0; i < vars.size(); i++) { assert(vars[i].is_stored); @@ -411,7 +412,8 @@ std::string TD_TL_writer_jni_cpp::gen_fetch_function_end(int field_num, const st return "}\n"; } - return " return res;\n" + return " return " + std::string(has_parent ? "std::move(res)" : "res") + + ";\n" "}\n"; } diff --git a/td/generate/tl_writer_jni_cpp.h b/td/generate/tl_writer_jni_cpp.h index 643b4914..e6969f46 100644 --- a/td/generate/tl_writer_jni_cpp.h +++ b/td/generate/tl_writer_jni_cpp.h @@ -76,7 +76,7 @@ class TD_TL_writer_jni_cpp : public TD_TL_writer_cpp { std::string gen_fetch_function_begin(const std::string &parser_name, const std::string &class_name, const std::string &parent_class_name, int arity, std::vector &vars, int parser_type) const override; - std::string gen_fetch_function_end(int field_num, const std::vector &vars, + std::string gen_fetch_function_end(bool has_parent, int field_num, const std::vector &vars, int parser_type) const override; std::string gen_fetch_function_result_begin(const std::string &parser_name, const std::string &class_name, diff --git a/td/telegram/cli.cpp b/td/telegram/cli.cpp index 74a1a221..d07fb13c 100644 --- a/td/telegram/cli.cpp +++ b/td/telegram/cli.cpp @@ -3344,7 +3344,7 @@ class CliClient final : public Actor { if (!user.empty() && password.empty()) { type = make_tl_object(user); } else { - if (port == "80") { + if (port == "80" || port == "8080") { type = make_tl_object(user, password, op.back() != 'p'); } else { type = make_tl_object(user, password); @@ -3381,7 +3381,7 @@ class CliClient final : public Actor { td::Log::set_verbosity_level(static_cast(op.size())); } else if (op[0] == 'v' && ('0' <= op[1] && op[1] <= '9')) { td::Log::set_verbosity_level(to_integer(op.substr(1))); - } else if (op == "sltvl" || op == "sltvle") { + } else if (op == "sltvl" || op == "sltvle" || op == "tag") { string tag; string level; std::tie(tag, level) = split(args); diff --git a/tdtl/td/tl/tl_generate.cpp b/tdtl/td/tl/tl_generate.cpp index da23f161..4be2e7ce 100644 --- a/tdtl/td/tl/tl_generate.cpp +++ b/tdtl/td/tl/tl_generate.cpp @@ -103,7 +103,7 @@ static void write_function_fetch(tl_outputer &out, const std::string &parser_nam } } - out.append(w.gen_fetch_function_end(field_num, vars, parser_type)); + out.append(w.gen_fetch_function_end(false, field_num, vars, parser_type)); } static std::vector write_function_store(tl_outputer &out, const std::string &storer_name, @@ -192,7 +192,7 @@ static void write_constructor_fetch(tl_outputer &out, const std::string &parser_ } } - out.append(w.gen_fetch_function_end(field_num, vars, parser_type)); + out.append(w.gen_fetch_function_end(class_name != parent_class_name, field_num, vars, parser_type)); } static void write_constructor_store(tl_outputer &out, const std::string &storer_name, const tl_combinator *t, @@ -378,7 +378,7 @@ void write_class(tl_outputer &out, const tl_type *t, const std::set } out.append(w.gen_fetch_switch_end()); - out.append(w.gen_fetch_function_end(-1, empty_vars, -1)); + out.append(w.gen_fetch_function_end(false, -1, empty_vars, -1)); } std::vector storers = w.get_storers(); @@ -672,7 +672,7 @@ void write_tl(const tl_config &config, tl_outputer &out, const TL_writer &w) { } } out.append(w.gen_fetch_switch_end()); - out.append(w.gen_fetch_function_end(-1, empty_vars, -1)); + out.append(w.gen_fetch_function_end(false, -1, empty_vars, -1)); } std::vector additional_functions = w.get_additional_functions(); @@ -737,7 +737,7 @@ void write_tl(const tl_config &config, tl_outputer &out, const TL_writer &w) { } } out.append(w.gen_fetch_switch_end()); - out.append(w.gen_fetch_function_end(-1, empty_vars, -1)); + out.append(w.gen_fetch_function_end(false, -1, empty_vars, -1)); } std::vector storers = w.get_storers(); diff --git a/tdtl/td/tl/tl_writer.h b/tdtl/td/tl/tl_writer.h index 536ef465..f1bfeb51 100644 --- a/tdtl/td/tl/tl_writer.h +++ b/tdtl/td/tl/tl_writer.h @@ -121,7 +121,7 @@ class TL_writer { virtual std::string gen_fetch_function_begin(const std::string &parser_name, const std::string &class_name, const std::string &parent_class_name, int arity, std::vector &vars, int parser_type) const = 0; - virtual std::string gen_fetch_function_end(int field_num, const std::vector &vars, + virtual std::string gen_fetch_function_end(bool has_parent, int field_num, const std::vector &vars, int parser_type) const = 0; virtual std::string gen_fetch_function_result_begin(const std::string &parser_name, const std::string &class_name,