scala/scala — pull request #4114 by retronym (2014-11-08 23:49:47+00:00)
Title: SI-8534 Avoid crash in erroneous SelectFromTypeTree

PR #2374 changed the behaviour of `typedSingletonTypeTree` in the
presence of an error typed reference tree. It incorrectly
returns the reference tree in case on an error. However, this is
a term tree, which is an inconsistent result with the input type
tree. Consequently, a `typedSelectInternal` later fails when
using this as the qualifier of a `SelectFromTypeTree`.

Both test cases enclosed show this symptom.

This commit:

- Returns `tree` rather than `refTyped` when `refTyped` is
error typed or when it isn't suitable as a stable prefix.
- Avoids issuing a cascading "not a stable prefix" error if the
`refTyped` is error typed.
- Adds an extra layer of defense in `typedSelectFromTypeTree`
to bail out quickly if the qualifier is error typed.

The last measure is not necessary to fix this bug.

Review by @adriaanm