Fix temporary variable handling for throw statements
authorJuerg Billeter <j@bitron.ch>
Tue, 27 May 2008 21:50:15 +0000 (21:50 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Tue, 27 May 2008 21:50:15 +0000 (21:50 +0000)
2008-05-27  Juerg Billeter  <j@bitron.ch>

* vala/valasemanticanalyzer.vala:
* vala/valathrowstatement.vala:
* gobject/valaccodegenerator.vala:

Fix temporary variable handling for throw statements

svn path=/trunk/; revision=1458

ChangeLog
gobject/valaccodegenerator.vala
vala/valasemanticanalyzer.vala
vala/valathrowstatement.vala

index 1454a38..a1d4175 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2008-05-27  Jürg Billeter  <j@bitron.ch>
+
+       * vala/valasemanticanalyzer.vala:
+       * vala/valathrowstatement.vala:
+       * gobject/valaccodegenerator.vala:
+
+       Fix temporary variable handling for throw statements
+
 2008-05-27  Jamie McCracken  <jamiemcc@gnome.org>
 
        * vala/valagenieparser.vala: 
@@ -11,7 +19,6 @@
        
        Added optional indent attribute to allow spaces to be used in lieu of tabs for indents
 
-
 2008-05-27  Jamie McCracken  <jamiemcc@gnome.org>
 
        * vala/valagenieparser.vala: 
index fe1759d..bf40eba 100644 (file)
@@ -2313,9 +2313,6 @@ public class Vala.CCodeGenerator : CodeGenerator {
 
                var cfrag = new CCodeFragment ();
 
-               /* declare temporary objects */
-               append_temp_decl (cfrag, temp_vars);
-
                // method will fail
                current_method_inner_error = true;
                var cassign = new CCodeAssignment (new CCodeIdentifier ("inner_error"), (CCodeExpression) stmt.error_expression.ccodenode);
@@ -2324,6 +2321,8 @@ public class Vala.CCodeGenerator : CodeGenerator {
                add_simple_check (stmt, cfrag);
 
                stmt.ccodenode = cfrag;
+
+               create_temp_decl (stmt, stmt.error_expression.temp_vars);
        }
 
        public override void visit_try_statement (TryStatement stmt) {
index e7e3e57..c6b4961 100644 (file)
@@ -2554,7 +2554,6 @@ public class Vala.SemanticAnalyzer : CodeVisitor {
                                        Report.error (expr.source_reference, "Invalid type for argument 1");
                                }
                        }
-                       expr.value_type = new VoidType ();
                }
 
                foreach (MemberInitializer init in expr.get_object_initializer ()) {
index 90acb9f..867c278 100644 (file)
@@ -1,6 +1,6 @@
 /* valathrowstatement.vala
  *
- * Copyright (C) 2007  Jürg Billeter
+ * Copyright (C) 2007-2008  Jürg Billeter
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -62,6 +62,8 @@ public class Vala.ThrowStatement : CodeNode, Statement {
        public override void accept_children (CodeVisitor visitor) {
                if (error_expression != null) {
                        error_expression.accept (visitor);
+
+                       visitor.visit_end_full_expression (error_expression);
                }
        }