From: Severin Heiniger Date: Fri, 27 Jun 2014 05:12:14 +0000 (-0700) Subject: codegen: Allow underscores in type parameter names X-Git-Tag: 0.35.1~40 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=457743fa935c668dcda5b7e9e57187f648357801;p=thirdparty%2Fvala.git codegen: Allow underscores in type parameter names https://bugzilla.gnome.org/show_bug.cgi?id=644938 --- diff --git a/codegen/valagobjectmodule.vala b/codegen/valagobjectmodule.vala index d4b888708..33bb87805 100644 --- a/codegen/valagobjectmodule.vala +++ b/codegen/valagobjectmodule.vala @@ -79,8 +79,11 @@ public class Vala.GObjectModule : GTypeModule { CCodeConstant func_name_constant; CCodeFunctionCall cinst, cspec; - func_name = "%s_type".printf (type_param.name.ascii_down ()); - func_name_constant = new CCodeConstant ("\"%s-type\"".printf (type_param.name.ascii_down ())); + var name_prefix = type_param.name.down (); + var canonical_prefix = name_prefix.replace ("_", "-"); + + func_name = "%s_type".printf (name_prefix); + func_name_constant = new CCodeConstant ("\"%s-type\"".printf (canonical_prefix)); enum_value = "%s_%s".printf (get_ccode_lower_case_name (cl, null), func_name).ascii_up (); cinst = new CCodeFunctionCall (new CCodeIdentifier ("g_object_class_install_property")); cinst.add_argument (ccall); @@ -96,8 +99,8 @@ public class Vala.GObjectModule : GTypeModule { prop_enum.add_value (new CCodeEnumValue (enum_value)); - func_name = "%s_dup_func".printf (type_param.name.ascii_down ()); - func_name_constant = new CCodeConstant ("\"%s-dup-func\"".printf (type_param.name.ascii_down ())); + func_name = "%s_dup_func".printf (name_prefix); + func_name_constant = new CCodeConstant ("\"%s-dup-func\"".printf (canonical_prefix)); enum_value = "%s_%s".printf (get_ccode_lower_case_name (cl, null), func_name).ascii_up (); cinst = new CCodeFunctionCall (new CCodeIdentifier ("g_object_class_install_property")); cinst.add_argument (ccall); @@ -112,8 +115,8 @@ public class Vala.GObjectModule : GTypeModule { prop_enum.add_value (new CCodeEnumValue (enum_value)); - func_name = "%s_destroy_func".printf (type_param.name.ascii_down ()); - func_name_constant = new CCodeConstant ("\"%s-destroy-func\"".printf (type_param.name.ascii_down ())); + func_name = "%s_destroy_func".printf (name_prefix); + func_name_constant = new CCodeConstant ("\"%s-destroy-func\"".printf (canonical_prefix)); enum_value = "%s_%s".printf (get_ccode_lower_case_name (cl, null), func_name).ascii_up (); cinst = new CCodeFunctionCall (new CCodeIdentifier ("g_object_class_install_property")); cinst.add_argument (ccall); diff --git a/tests/Makefile.am b/tests/Makefile.am index 2a2ea073c..50d0e230f 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -170,6 +170,7 @@ TESTS = \ objects/bug641828.vala \ objects/bug642809.vala \ objects/bug643711.vala \ + objects/bug644938.vala \ objects/bug646362.vala \ objects/bug646792.vala \ objects/bug647018.vala \ diff --git a/tests/objects/bug644938.vala b/tests/objects/bug644938.vala new file mode 100644 index 000000000..eed56c86f --- /dev/null +++ b/tests/objects/bug644938.vala @@ -0,0 +1,12 @@ +public abstract class Foo : Object { + public abstract void method (TYPE_PARAM o); +} + +public class Bar : Foo { + public override void method (int i) { + } +} + +void main () { + var bar = new Bar (); +}