(alternate title: The "Fail Early, Fail Often" Principle in Action)
I would like to award Adobe the "best ever implementation of indexOf". Ready for it? Here it is:
override flash_proxy function callProperty(name:*, ... rest):* {
return null;
}
This beauty can be found in mx.collections.ListCollectionView.
And the kicker? The function's documentation:
/**
* @private
* Any methods that can't be found on this class shouldn't be called,
* so return null
*/
The author clearly knew that unknown methods* shouldn't be called… But instead of doing something sensible – like throwing an exception – they do something wholly nonsensical and return null. Or, of course, they could also have left the function unimplemented, which would result in a strange and unhelpful exception… But, of course, I would expect nothing but the best from the Flex standard library.
Next up: why implicit conversions from null to int are always wrong.
</rant>
*: the magic callProperty method is called on subclasses of Proxy when a method can't be found. For example if bar is not a method of foo, executing foo.bar()will call foo.callProperty("bar").
PS: Instead of calling indexOf, I should have been calling getItemIndex.