]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
codegen: Add type declaration for implicit temporary local variable
authorRico Tzschichholz <ricotz@ubuntu.com>
Sat, 18 Sep 2021 21:30:31 +0000 (23:30 +0200)
committerRico Tzschichholz <ricotz@ubuntu.com>
Thu, 23 Sep 2021 08:18:34 +0000 (10:18 +0200)
codegen/valaccodebasemodule.vala
tests/Makefile.am
tests/delegates/implicit-local-variable.vala [new file with mode: 0644]

index e69dacc3e98eae6c5894963178799e0dd1a77730..dd753a1cc11e8b52a40a5e3346c8534480687332 100644 (file)
@@ -3839,6 +3839,8 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
        }
 
        public void emit_temp_var (LocalVariable local, bool on_error = false) {
+               generate_type_declaration (local.variable_type, cfile);
+
                var init = (!local.name.has_prefix ("*") && local.init);
                if (is_in_coroutine ()) {
                        closure_struct.add_field (get_ccode_name (local.variable_type), local.name, 0, get_ccode_declarator_suffix (local.variable_type));
index 83dbff3b5249153c6b622670fd09fdcb133dadc7..1d823ca11a31b2459988208ca8b0796891f6f875 100644 (file)
@@ -394,6 +394,7 @@ TESTS = \
        delegates/fields.vala \
        delegates/fields-no-target.vala \
        delegates/gclosure-conversion.vala \
+       delegates/implicit-local-variable.vala \
        delegates/incompatible.test \
        delegates/incompatible-assignment.test \
        delegates/incompatible-initializer.test \
diff --git a/tests/delegates/implicit-local-variable.vala b/tests/delegates/implicit-local-variable.vala
new file mode 100644 (file)
index 0000000..ffe1d31
--- /dev/null
@@ -0,0 +1,6 @@
+void main () {
+       SourceFuncs foo = { null, null, () => { return false; }, null };
+       Source bar = null;
+
+       foo.dispatch (bar, null);
+}