summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/backend/jvm/BTypesFromSymbols.scala
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan@lightbend.com>2016-08-12 17:40:00 -0700
committerGitHub <noreply@github.com>2016-08-12 17:40:00 -0700
commit4b77734b28f82e2573446bd997e739b80de4af1d (patch)
treed87c4b98cc886aba8e5af7ebf44b1f42e0c42206 /src/compiler/scala/tools/nsc/backend/jvm/BTypesFromSymbols.scala
parent3e0b2c2b14bdc26a40887af7a375077565f004b3 (diff)
parent2c2fd4f4b63e1d9a6ee1243637ad8bcb0deb11d6 (diff)
downloadscala-4b77734b28f82e2573446bd997e739b80de4af1d.tar.gz
scala-4b77734b28f82e2573446bd997e739b80de4af1d.tar.bz2
scala-4b77734b28f82e2573446bd997e739b80de4af1d.zip
Merge pull request #5291 from lrytz/sd20
SD-20 Inlcude static methods in the InlineInfo in mixed compilation Fixes scala/scala-dev#20
Diffstat (limited to 'src/compiler/scala/tools/nsc/backend/jvm/BTypesFromSymbols.scala')
-rw-r--r--src/compiler/scala/tools/nsc/backend/jvm/BTypesFromSymbols.scala9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/jvm/BTypesFromSymbols.scala b/src/compiler/scala/tools/nsc/backend/jvm/BTypesFromSymbols.scala
index b2a575d7d1..477afaa91b 100644
--- a/src/compiler/scala/tools/nsc/backend/jvm/BTypesFromSymbols.scala
+++ b/src/compiler/scala/tools/nsc/backend/jvm/BTypesFromSymbols.scala
@@ -562,9 +562,16 @@ class BTypesFromSymbols[G <: Global](val global: G) extends BTypes {
var warning = Option.empty[ClassSymbolInfoFailureSI9111]
+ def keepMember(sym: Symbol) = sym.isMethod && !scalaPrimitives.isPrimitive(sym)
+ val classMethods = classSym.info.decls.iterator.filter(keepMember)
+ val methods = if (!classSym.isJavaDefined) classMethods else {
+ val staticMethods = classSym.companionModule.info.decls.iterator.filter(m => !m.isConstructor && keepMember(m))
+ staticMethods ++ classMethods
+ }
+
// Primitive methods cannot be inlined, so there's no point in building a MethodInlineInfo. Also, some
// primitive methods (e.g., `isInstanceOf`) have non-erased types, which confuses [[typeToBType]].
- val methodInlineInfos = classSym.info.decls.iterator.filter(m => m.isMethod && !scalaPrimitives.isPrimitive(m)).flatMap({
+ val methodInlineInfos = methods.flatMap({
case methodSym =>
if (completeSilentlyAndCheckErroneous(methodSym)) {
// Happens due to SI-9111. Just don't provide any MethodInlineInfo for that method, we don't need fail the compiler.