a warning would be nice

package
{
    import flash.display.Sprite;

    public class Foo extends Sprite {
        public var bar:Object;

        public function Foo() {
            bar = 5;
            baz();
        }

        public function baz():void {
            var bar:String = "not 5";
            trace(bar);
        }

    }
}

What do you think the output is? "not 5", as would be expected. But if you are stupid enough to do something like this (I was, after some refactoring), I would expect the compiler to at least throw a warning. Nope!

Also this is interesting:

public function baz2():void {
    bar = 2;
    var bar:String = "not 2";
    trace(bar);
}

does in fact throw this warning:

/Users/greay/projs/Test/Foo.as(19): col: 10 Error: Implicit coercion of a value of type int to an unrelated type String.