[vala/0.40] 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.40] vala: Init formal_target_type of ArrayCreationExpr from InitializerList
- Date: Wed, 9 Oct 2019 17:32:35 +0000 (UTC)
commit d0dea88aec6d10400037d52f9ec865efe2bc6b83
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 fa2a152ee..37e95951a 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -132,6 +132,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 0976e633a..f4f5104e9 100644
--- a/vala/valainitializerlist.vala
+++ b/vala/valainitializerlist.vala
@@ -165,6 +165,7 @@ public class Vala.InitializerList : Expression {
var array_creation = new ArrayCreationExpression
(array_type.element_type.copy (), array_type.rank, this, source_reference);
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]