diff options
author | Rico Tzschichholz <ricotz@ubuntu.com> | 2020-06-26 08:43:12 +0200 |
---|---|---|
committer | Rico Tzschichholz <ricotz@ubuntu.com> | 2020-06-26 08:43:12 +0200 |
commit | b4b64c9b6e0fef79371a1c446a1777feda8779f1 (patch) | |
tree | ac3d4e642c89c6b9245fe1004e49a23aa00fe6ec /tests/methods | |
parent | c6a4b6e95e64a6ebd2bf88d4f3c3a55b2d3f31f4 (diff) | |
download | vala-b4b64c9b6e0fef79371a1c446a1777feda8779f1.tar.gz |
vala: Improve parameter check of "get" method meant to be used by foreach
The index-based iteration requires the "get" method to take one integer
compatible parameter. Otherwise continue checking other options.
Fixes https://gitlab.gnome.org/GNOME/vala/issues/1017
Diffstat (limited to 'tests/methods')
-rw-r--r-- | tests/methods/iterator.vala | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/tests/methods/iterator.vala b/tests/methods/iterator.vala index d2ee2dcc6..009d0221d 100644 --- a/tests/methods/iterator.vala +++ b/tests/methods/iterator.vala @@ -47,6 +47,43 @@ class FooCollection3 { } } +class FooEntry4<K,V> { + public K key { get; private set; } + public V value { get; private set; } + + public FooEntry4 (K _key, V _value) { + key = _key; + value = _value; + } +} + +class FooIterator4<G> { + bool called = false; + + public bool next () { + return !called; + } + + public G @get () { + assert (!called); + called = true; + return new FooEntry4<string,Foo> ("foo", foo_instance); + } +} + +class FooCollection4<K,V> { + public int size { get { return 1; } } + + public V @get (K key) { + assert (key == "foo"); + return foo_instance; + } + + public FooIterator4<FooEntry4<K,V>> iterator () { + return new FooIterator4<FooEntry4<K,V>> (); + } +} + Foo foo_instance; void main () { @@ -70,6 +107,14 @@ void main () { assert (foo3 == foo_instance); } + // Uses iterator() and get() + var collection4 = new FooCollection4<string,Foo> (); + foreach (var fooentry4 in collection4) { + assert (fooentry4.key == "foo"); + assert (fooentry4.value == foo_instance); + } + assert (collection4["foo"] == foo_instance); + // GLib.List var list = new List<Foo> (); list.append (foo_instance); |