summaryrefslogtreecommitdiff
path: root/CONTRIBUTING.md
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2013-11-26 13:05:26 +0100
committerJason Zaugg <jzaugg@gmail.com>2013-12-06 12:40:46 +0100
commit9036f774bc834acd5b71484d2fa3882896ffd3ce (patch)
tree5b17c62f10b55efce6b5d29b5a11e70c2a0db54e /CONTRIBUTING.md
parent7c1d1149291e1b83c96a0f6954144b9e97c030ea (diff)
downloadscala-9036f774bc834acd5b71484d2fa3882896ffd3ce.tar.gz
scala-9036f774bc834acd5b71484d2fa3882896ffd3ce.tar.bz2
scala-9036f774bc834acd5b71484d2fa3882896ffd3ce.zip
SI-8010 Fix regression in erasure double definition checks
Calls to `Symbol#info` during scope iteration considered harmful. Looks like calling `info` during this Scope iteration is triggering the ExplicitOuter info transformer, which "makes all super accessors and modules in traits non-private, mangling their names.". This name change necessitates a rehashing of the owning scope, which I suspect is enough to corrupt the ScopeEntry-s being traversed in `checkNoDeclaredDoubleDefs`. The upshot was that we encountered the same symbol twice, which was reported as being a double-definition. This problem only showed up after 086702d8a74, which did nothing worse then change the order in which `{e, e1}.sym.info` were forced. I inspected SymbolPairs/OverridingPairs which *appear* to be immune as they only test flags during scope iteration; infos are not used until later, at which point we're iterating a temporary scope that isn't part of the type of the owner of the symbols.
Diffstat (limited to 'CONTRIBUTING.md')
0 files changed, 0 insertions, 0 deletions