From 38dcb685e15fe8fc562152b8cd5d707106591b56 Mon Sep 17 00:00:00 2001 From: Jake Farrell Date: Thu, 9 Jun 2011 18:55:12 +0000 Subject: [PATCH] Thrift-1181: AS3 compiler generates incorrect code for setting default values in constructor Client: as3 Patch: Ethan Urie Fix generated statements syntax to remove :type of the variable. git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1134039 13f79535-47bb-0310-9956-ffa450edef68 --- compiler/cpp/src/generate/t_as3_generator.cc | 24 ++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/compiler/cpp/src/generate/t_as3_generator.cc b/compiler/cpp/src/generate/t_as3_generator.cc index 422af07d..cebb0784 100644 --- a/compiler/cpp/src/generate/t_as3_generator.cc +++ b/compiler/cpp/src/generate/t_as3_generator.cc @@ -468,9 +468,17 @@ void t_as3_generator::print_const_value(std::ofstream& out, string name, t_type* } if (type->is_base_type()) { string v2 = render_const_value(out, name, type, value); - out << name << ":" << type_name(type) << " = " << v2 << ";" << endl << endl; + out << name; + if (!defval) { + out << ":" << type_name(type); + } + out << " = " << v2 << ";" << endl << endl; } else if (type->is_enum()) { - out << name << ":" << type_name(type) << " = " << value->get_integer() << ";" << endl << endl; + out << name; + if(!defval) { + out << ":" << type_name(type); + } + out << " = " << value->get_integer() << ";" << endl << endl; } else if (type->is_struct() || type->is_xception()) { const vector& fields = ((t_struct*)type)->get_members(); vector::const_iterator f_iter; @@ -505,7 +513,11 @@ void t_as3_generator::print_const_value(std::ofstream& out, string name, t_type* } out << endl; } else if (type->is_map()) { - out << name << ":" << type_name(type) << " = new " << type_name(type, false, true) << "();" << endl; + out << name; + if(!defval){ + out << ":" << type_name(type); + } + out << " = new " << type_name(type, false, true) << "();" << endl; if (!in_static) { indent(out) << "{" << endl; indent_up(); @@ -529,7 +541,11 @@ void t_as3_generator::print_const_value(std::ofstream& out, string name, t_type* } out << endl; } else if (type->is_list() || type->is_set()) { - out << name << ":" << type_name(type) << " = new " << type_name(type, false, true) << "();" << endl; + out << name; + if(!defval) { + out << ":" << type_name(type); + } + out << " = new " << type_name(type, false, true) << "();" << endl; if (!in_static) { indent(out) << "{" << endl; indent_up(); -- 2.17.1