diff options
author | Adriaan Moors <adriaan.moors@typesafe.com> | 2015-04-22 17:10:57 -0700 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2015-04-22 17:10:57 -0700 |
commit | 20f7389c4cb24e44c382b6d1e60e871eb5114173 (patch) | |
tree | e73cb854bc8b75a89b6a2b5f1c6a5caabc2e2e35 /src | |
parent | ba36c2bff4380be6f9cdf802b56b766d475fbea6 (diff) | |
parent | 2fbd539e353fd9d234f9a633d7606529d871d939 (diff) | |
download | scala-20f7389c4cb24e44c382b6d1e60e871eb5114173.tar.gz scala-20f7389c4cb24e44c382b6d1e60e871eb5114173.tar.bz2 scala-20f7389c4cb24e44c382b6d1e60e871eb5114173.zip |
Merge pull request #4452 from lrytz/valueClassSelfTypeBCode
Don't crash GenBCode for value classes with a self declaration
Diffstat (limited to 'src')
-rw-r--r-- | src/compiler/scala/tools/nsc/backend/jvm/BCodeAsmCommon.scala | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/jvm/BCodeAsmCommon.scala b/src/compiler/scala/tools/nsc/backend/jvm/BCodeAsmCommon.scala index 162da4236a..eadc404bee 100644 --- a/src/compiler/scala/tools/nsc/backend/jvm/BCodeAsmCommon.scala +++ b/src/compiler/scala/tools/nsc/backend/jvm/BCodeAsmCommon.scala @@ -329,10 +329,12 @@ final class BCodeAsmCommon[G <: Global](val global: G) { * Build the [[InlineInfo]] for a class symbol. */ def buildInlineInfoFromClassSymbol(classSym: Symbol, classSymToInternalName: Symbol => InternalName, methodSymToDescriptor: Symbol => String): InlineInfo = { - val selfType = { + val traitSelfType = if (classSym.isTrait && !classSym.isImplClass) { // The mixin phase uses typeOfThis for the self parameter in implementation class methods. val selfSym = classSym.typeOfThis.typeSymbol if (selfSym != classSym) Some(classSymToInternalName(selfSym)) else None + } else { + None } val isEffectivelyFinal = classSym.isEffectivelyFinal @@ -394,6 +396,6 @@ final class BCodeAsmCommon[G <: Global](val global: G) { } }).toMap - InlineInfo(selfType, isEffectivelyFinal, methodInlineInfos, warning) + InlineInfo(traitSelfType, isEffectivelyFinal, methodInlineInfos, warning) } } |