[vala/0.44] vala: Init formal_target_type of ArrayCreationExpr from InitializerList
- From: Rico Tzschichholz <ricotz src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala/0.44] vala: Init formal_target_type of ArrayCreationExpr from InitializerList
- Date: Sun, 8 Sep 2019 16:22:46 +0000 (UTC)
commit 279e62a110e5f6de7fb61b7c51ec59acbfd5686f
Author: Rico Tzschichholz <ricotz ubuntu com>
Date: Fri Aug 16 15:17:47 2019 +0200
vala: Init formal_target_type of ArrayCreationExpr from InitializerList
formal_target_type is expected to be set when inferring generic type
parameters.
Fixes https://gitlab.gnome.org/GNOME/vala/issues/835
tests/Makefile.am | 1 +
tests/methods/argument-array-initilizer.vala | 14 ++++++++++++++
vala/valainitializerlist.vala | 1 +
3 files changed, 16 insertions(+)
---
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 5f9297a7f..075666a1a 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -142,6 +142,7 @@ TESTS = \
methods/bug784691.vala \
methods/bug791215.vala \
methods/bug791283.vala \
+ methods/argument-array-initilizer.vala \
methods/generics.vala \
methods/printf-invalid.test \
methods/printf-constructor.vala \
diff --git a/tests/methods/argument-array-initilizer.vala b/tests/methods/argument-array-initilizer.vala
new file mode 100644
index 000000000..3034599b7
--- /dev/null
+++ b/tests/methods/argument-array-initilizer.vala
@@ -0,0 +1,14 @@
+class Foo : Object {
+}
+
+G get_object<G> (Object[] o) {
+ return null;
+}
+
+Foo get_foo () {
+ return get_object ({ new Foo () });
+}
+
+void main() {
+ get_foo ();
+}
diff --git a/vala/valainitializerlist.vala b/vala/valainitializerlist.vala
index f7d806cfe..9a6ca85e3 100644
--- a/vala/valainitializerlist.vala
+++ b/vala/valainitializerlist.vala
@@ -166,6 +166,7 @@ public class Vala.InitializerList : Expression {
var array_creation = new ArrayCreationExpression
(array_type.element_type.copy (), array_type.rank, this, source_reference);
array_creation.length_type = array_type.length_type.copy ();
array_creation.target_type = target_type;
+ array_creation.formal_target_type = formal_target_type;
old_parent_node.replace_expression (this, array_creation);
checked = false;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]