Fix for an embarassing bug reported by Dmitry Skavish.

We have a bunch of code for aggressively detecting many errors before failing. Unfortunately, there was a situation where we'd detect an error and keep going (to find more errors), but forget to ultimately throw the error.

This resulted in polluting the JIT bindings cache, which breaks the world. The fix is easiest to reproduce with Child Injectors, but I believe it's also possible to poison the JIT bindings cache without child injectors.

The specific error we omit is the "Scope not found" error. In Guice 1.0, no error was reported if a scope wasn't found. So although this is an unfortunate problem, its not much worse than what we did previously. I don't think it's necessary to cut a "Guice 2.0.1" for this problem. The main difference is that the error impacts whether a binding will live in parent or child injector.

git-svn-id: d779f126-a31b-0410-b53b-1d3aecad763e
2 files changed