From d6392f76d525cecb0e6100e977f217156cca1a22 Mon Sep 17 00:00:00 2001 From: Jean Privat Date: Tue, 19 May 2015 19:41:20 -0400 Subject: [PATCH] lib: fix getters in subclasses of collection Signed-off-by: Jean Privat --- lib/dummy_array.nit | 6 ++++-- lib/trees/bintree.nit | 7 ++++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/lib/dummy_array.nit b/lib/dummy_array.nit index 9061e53..85440b4 100644 --- a/lib/dummy_array.nit +++ b/lib/dummy_array.nit @@ -28,9 +28,10 @@ class DummyArray _length = l + 1 end - redef fun remove(value: Int) + redef fun remove(value) do assert not is_empty + if not value isa Int then return var l = _length if l > 1 then var last = _values[l - 1] @@ -41,8 +42,9 @@ class DummyArray _length = l - 1 end - redef fun has(value: Int): Bool + redef fun has(value) do + if not value isa Int then return false assert value < _capacity var pos = _keys[value] if pos < _length then diff --git a/lib/trees/bintree.nit b/lib/trees/bintree.nit index 6b6b91c..610ec2e 100644 --- a/lib/trees/bintree.nit +++ b/lib/trees/bintree.nit @@ -64,7 +64,7 @@ class BinTreeMap[K: Comparable, E] # assert not tree.has_key(0) # assert tree.has_key(2) # assert not tree.has_key(6) - redef fun has_key(key: K): Bool do + redef fun has_key(key) do if is_empty then return false var res = search_down(root.as(not null), key) if res != null then @@ -85,7 +85,7 @@ class BinTreeMap[K: Comparable, E] # assert tree[1] == "n1" # assert tree.has_key(1) # assert tree[2] == "n2" - redef fun [](key: K): E do + redef fun [](key) do assert not_empty: not is_empty if cache_node != null and cache_node.key == key then return cache_node.value var res = search_down(root.as(not null), key) @@ -94,7 +94,8 @@ class BinTreeMap[K: Comparable, E] end # Search `key` in `from` and its children nodes. - protected fun search_down(from: N, key: K): nullable N do + protected fun search_down(from: N, key: nullable Object): nullable N do + if not key isa Comparable then return null var cmp = key <=> from.key if cmp == 0 then return from if from.left != null and cmp < 0 then -- 1.7.9.5