summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRico Tzschichholz <ricotz@ubuntu.com>2019-12-19 10:18:30 +0100
committerRico Tzschichholz <ricotz@ubuntu.com>2019-12-19 10:18:30 +0100
commite73009f2e4de8190eb372f8bcc93d9de9b102712 (patch)
tree8ad8145ae30678c682c3184e0d986dd3c6baa9f6
parent1984952531043e6b713e2884d640d4b976a43c88 (diff)
downloadvala-wip/null-conditional.tar.gz
-rw-r--r--tests/Makefile.am1
-rw-r--r--tests/control-flow/bug761267.vala51
2 files changed, 52 insertions, 0 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 21bfb431e..829629d3d 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -192,6 +192,7 @@ TESTS = \
control-flow/bug691514.vala \
control-flow/bug736774-1.vala \
control-flow/bug736774-2.vala \
+ control-flow/bug761267.vala \
control-flow/bug790903.test \
control-flow/bug790903-2.test \
control-semantic/argument-extra.test \
diff --git a/tests/control-flow/bug761267.vala b/tests/control-flow/bug761267.vala
new file mode 100644
index 000000000..5c2e91cde
--- /dev/null
+++ b/tests/control-flow/bug761267.vala
@@ -0,0 +1,51 @@
+class Foo {
+ public int i = 42;
+
+ public Foo? foo () {
+ return null;
+ }
+
+ public void faz () {
+ assert_not_reached ();
+ }
+}
+
+void bar (Foo? f) {
+ {
+ int? j = f?.i;
+ assert (j == null);
+ }
+ {
+ int k = 23;
+ k = f?.i;
+ assert (k == 0);
+ }
+}
+
+void baz (Foo? f) {
+ {
+ int i = f?.i;
+ assert (i == 42);
+ }
+ {
+ int? j = 23;
+ j = f?.foo ()?.i;
+ assert (j == null);
+ }
+ {
+ int k = 23;
+ k = f?.foo ()?.i;
+ assert (k == 0);
+ }
+}
+
+void main () {
+ {
+ Foo? foo = null;
+ foo?.faz ();
+ }
+ {
+ bar (null);
+ baz (new Foo ());
+ }
+}