diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2013-01-08 12:10:10 +0100 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2013-01-08 12:26:41 +0100 |
commit | 7a23562431e3e9673112b0f5ec5624eb28194ee5 (patch) | |
tree | b738cdde615dd723ff3e7e6a708cff0d4edcadde /test/files/neg/t6912.check | |
parent | 1381cda86ddeca1b9829a9c53ff9372cfd816735 (diff) | |
download | scala-7a23562431e3e9673112b0f5ec5624eb28194ee5.tar.gz scala-7a23562431e3e9673112b0f5ec5624eb28194ee5.tar.bz2 scala-7a23562431e3e9673112b0f5ec5624eb28194ee5.zip |
SI-6912 Avoid a typer cycle in overload resolution.
c800d1fe, and followup commits 1ddc9358 and b10b5821
modified error handling in `Infer#inferExprAlternative`.
After these changes, this method could fail to resolve
the overloaded alternative if:
best != NoSymbol
&& !competing.isEmpty
&& !noAlternatives
&& pt.isErroneous
This commit calls `setError` in that case, which
prevents the cycle in `adapt`.
While I didn't extract a reproduction from the
original code base, I've included a test case that
exhibits the same symptom.
It was actually pretty tough to find an program that
got close to this code path, but luckilly we've been
pretty close to this bug in SI-5553 / 4f99c2e5, and those
test cases formed the basis for this one.
Diffstat (limited to 'test/files/neg/t6912.check')
-rw-r--r-- | test/files/neg/t6912.check | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/test/files/neg/t6912.check b/test/files/neg/t6912.check new file mode 100644 index 0000000000..137b651705 --- /dev/null +++ b/test/files/neg/t6912.check @@ -0,0 +1,4 @@ +t6912.scala:8: error: not found: type Xxxx + def test[T]: Xxxx = Foo1[T] + ^ +one error found |