class foo {
func bar<T>(t : T) {
print("the value is \(t)");
}
}
class baz: foo {
override func bar<T>(t: T) {
print("lies! the value is \(t)")
}
}
func callBar(f: foo, i: Int) {
f.bar(t: i);
}
let f = foo();
let b = baz();
callBar(f: f, i: 42);
callBar(f: b, i: (42 + 1));
Y2xhc3MgZm9vIHsKCWZ1bmMgYmFyPFQ+KHQgOiBUKSB7CgkJcHJpbnQoInRoZSB2YWx1ZSBpcyBcKHQpIik7Cgl9Cn0KCmNsYXNzIGJhejogZm9vIHsKCW92ZXJyaWRlIGZ1bmMgYmFyPFQ+KHQ6IFQpIHsKCQlwcmludCgibGllcyEgdGhlIHZhbHVlIGlzIFwodCkiKQoJfQp9CgpmdW5jIGNhbGxCYXIoZjogZm9vLCBpOiBJbnQpIHsKCWYuYmFyKHQ6IGkpOwp9CgpsZXQgZiA9IGZvbygpOwpsZXQgYiA9IGJheigpOwoKY2FsbEJhcihmOiBmLCBpOiA0Mik7CmNhbGxCYXIoZjogYiwgaTogKDQyICsgMSkpOwo=