scala/scala — pull request #2651 by VladUreche (2013-06-12 16:59:30+00:00)
Title: SI-7343 Fixed phase ordering in specialization

Specialization rewires class parents during info transformation, and
the new info then guides the tree changes. But if a symbol is created
during duplication, which runs after specialization, its info is not
visited and thus the symbol is not specialized.

One manifestation is the following:
```
object Test {

class Parent[@specialized(Int) T]

def spec_method[@specialized(Int) T](t: T, expectedXSuper: String) = {
class X extends Parent[T]()
// even in the specialized variant, the local X class
// doesn't extend Parent$mcI$sp, since its symbol has
// been created after specialization and was not seen
// by specialzation's info transformer.
...
}
}
```
We can fix this by forcing duplication to take place before specialization.

Review by @dragos, @paulp or @axel22.