diff options
author | Adriaan Moors <adriaan@lightbend.com> | 2017-04-11 16:57:16 -0700 |
---|---|---|
committer | Adriaan Moors <adriaan@lightbend.com> | 2017-04-12 07:51:18 -0700 |
commit | 747e22322330a762dd54037ccc1cb3608c6691bd (patch) | |
tree | 1f18742955bbdc6914c23c739e65f11a738895a3 /test/pending/run/t0947.scala | |
parent | 12c240d69b6958d2c8f03a7728c097dd215011cd (diff) | |
download | scala-747e22322330a762dd54037ccc1cb3608c6691bd.tar.gz scala-747e22322330a762dd54037ccc1cb3608c6691bd.tar.bz2 scala-747e22322330a762dd54037ccc1cb3608c6691bd.zip |
Actually retract clashing synthetic apply/unapply
The completer set the IS_ERROR flag and I assumed the typer
dropped a synthetic tree with a symbol with that flag, because
the tree was not shown in -Xprint output.
It turns out, as explained by lrytz, that the mechanism was
fragile because it relied on the order in which completers are
run. We now cover both the case that:
- the completer was run (and the `IS_ERROR` flag was set)
before `addSynthetics` in `typedStat` iterates over the scope
(since the symbol is already unlinked, the tree is not added,
irrespective of its flags). For this case, we also remove the
symbol from the synthetics in its unit.
- the completer is triggered during the iteration in `addSynthetics`,
which needs the check for the `IS_ERROR` flag during the iteration.
Thankfully, the community build caught my mistake, and lrytz provided
a good analysis and review.
Fix scala/bug#10261
Diffstat (limited to 'test/pending/run/t0947.scala')
0 files changed, 0 insertions, 0 deletions