This addresses issue #622.  The problem is that CastOptimizer leaves the
tree in a particular state, namely:
"Cast.throwClassCastExceptionUnlessNull(value).value".  The expectation is
that FixDanglignRefsVisitor would replace the ".value" field reference
with ".nullField".  The problem is, however, that only TightenTypesVisitor
can force FDRV to run; CastOptimizer cannot.

My fix is to eliminate CastOptimizer altogether and move its work (mostly)
into TypeTightener.  Impossible casts are replaced in the tree with a
(<null>) cast, which becomes a throwClassCastExceptionUnlessNull() in
CastNormalizer.

Review by: mmendez



git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@403 8db76d5a-ed1c-0410-87a9-c151d255dfc7
5 files changed