From: Juerg Billeter Date: Tue, 28 Aug 2007 18:53:29 +0000 (+0000) Subject: generate warning about invalid property ids, fixes bug 463668 X-Git-Tag: VALA_0_1_3~34 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e5bccaaa717a8d988b0d4a035946c462bf77231b;p=platform%2Fupstream%2Fvala.git generate warning about invalid property ids, fixes bug 463668 2007-08-28 Juerg Billeter * ccode/valaccodeswitchstatement.vala, gobject/valacodegeneratorclass.vala: generate warning about invalid property ids, fixes bug 463668 svn path=/trunk/; revision=522 --- diff --git a/ChangeLog b/ChangeLog index 2ac0b3d..29abe06 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2007-08-28 Jürg Billeter + + * ccode/valaccodeswitchstatement.vala, + gobject/valacodegeneratorclass.vala: generate warning about invalid + property ids, fixes bug 463668 + 2007-08-28 Mathias Hasselmann * gobject/valacodegenerator.vala: avoid crash on missing copy diff --git a/ccode/valaccodeswitchstatement.vala b/ccode/valaccodeswitchstatement.vala index 8a12d8d..596b972 100644 --- a/ccode/valaccodeswitchstatement.vala +++ b/ccode/valaccodeswitchstatement.vala @@ -33,6 +33,7 @@ public class Vala.CCodeSwitchStatement : CCodeStatement { public CCodeExpression! expression { get; set; } private Gee.List case_statements = new ArrayList (); + private Gee.List default_statements = new ArrayList (); public CCodeSwitchStatement (construct CCodeExpression! expression) { } @@ -45,7 +46,16 @@ public class Vala.CCodeSwitchStatement : CCodeStatement { public void add_case (CCodeCaseStatement! case_stmt) { case_statements.add (case_stmt); } - + + /** + * Append the specified statement to the default clause. + * + * @param stmt a statement + */ + public void add_default_statement (CCodeStatement! stmt) { + default_statements.add (stmt); + } + public override void write (CCodeWriter! writer) { writer.write_indent (); writer.write_string ("switch ("); @@ -56,7 +66,17 @@ public class Vala.CCodeSwitchStatement : CCodeStatement { foreach (CCodeCaseStatement case_stmt in case_statements) { case_stmt.write (writer); } - + + if (default_statements.size > 0) { + writer.write_indent (); + writer.write_string ("default:"); + writer.write_newline (); + + foreach (CCodeStatement stmt in default_statements) { + stmt.write (writer); + } + } + writer.write_end_block (); } } diff --git a/gobject/valacodegeneratorclass.vala b/gobject/valacodegeneratorclass.vala index 22d0deb..53fc7a8 100644 --- a/gobject/valacodegeneratorclass.vala +++ b/gobject/valacodegeneratorclass.vala @@ -483,6 +483,9 @@ public class Vala.CodeGenerator { ccase.add_statement (new CCodeBreakStatement ()); cswitch.add_case (ccase); } + cswitch.add_default_statement (get_invalid_property_id_warn_statement ()); + cswitch.add_default_statement (new CCodeBreakStatement ()); + block.add_statement (cswitch); get_prop.block = block; @@ -535,6 +538,9 @@ public class Vala.CodeGenerator { ccase.add_statement (new CCodeBreakStatement ()); cswitch.add_case (ccase); } + cswitch.add_default_statement (get_invalid_property_id_warn_statement ()); + cswitch.add_default_statement (new CCodeBreakStatement ()); + block.add_statement (cswitch); /* destroy func properties for generic types */ @@ -555,4 +561,13 @@ public class Vala.CodeGenerator { source_type_member_definition.append (set_prop); } + + private CCodeStatement get_invalid_property_id_warn_statement () { + // warn on invalid property id + var cwarn = new CCodeFunctionCall (new CCodeIdentifier ("G_OBJECT_WARN_INVALID_PROPERTY_ID")); + cwarn.add_argument (new CCodeIdentifier ("object")); + cwarn.add_argument (new CCodeIdentifier ("property_id")); + cwarn.add_argument (new CCodeIdentifier ("pspec")); + return new CCodeExpressionStatement (cwarn); + } }