Skip to content

Commit

Permalink
Fix SI-7107: scala now thinks every exception is polymorphic
Browse files Browse the repository at this point in the history
We need to force info of the `cls` in `parseExceptions`
because we pass `cls` to `addThrowsAnnotation` which in turn calls
`Symbol.isMonomorphicType` that relies on a symbol being initialized
to give right answers.

In the future we should just clean up implementation of
`isMonomorphicType` method to not rely on a symbol being initialized
as there's no inherent reason for that in most cases. In cases where
there's reason for that we should just force the initialization.

This patch does not come with a test-case because it's hard to reproduce
not initialized symbols in partest reliably.
  • Loading branch information
gkossakowski committed Feb 26, 2013
1 parent 3b85c3d commit 4f1bfec
Showing 1 changed file with 3 additions and 0 deletions.
Expand Up @@ -1044,6 +1044,9 @@ abstract class ClassfileParser {
for (n <- 0 until nClasses) { for (n <- 0 until nClasses) {
// FIXME: this performs an equivalent of getExceptionTypes instead of getGenericExceptionTypes (SI-7065) // FIXME: this performs an equivalent of getExceptionTypes instead of getGenericExceptionTypes (SI-7065)
val cls = pool.getClassSymbol(in.nextChar.toInt) val cls = pool.getClassSymbol(in.nextChar.toInt)
// we call initialize due to the fact that we call Symbol.isMonomorphicType in addThrowsAnnotation
// and that method requires Symbol to be forced to give the right answers, see SI-7107 for details
cls.initialize
sym.addThrowsAnnotation(cls) sym.addThrowsAnnotation(cls)
} }
} }
Expand Down

0 comments on commit 4f1bfec

Please sign in to comment.