diff --git a/compile/interface/src/main/scala/xsbt/Compat.scala b/compile/interface/src/main/scala/xsbt/Compat.scala index 9f9fb247c..a4859275d 100644 --- a/compile/interface/src/main/scala/xsbt/Compat.scala +++ b/compile/interface/src/main/scala/xsbt/Compat.scala @@ -107,8 +107,8 @@ abstract class Compat { } lazy val AnyValClass = global.rootMirror.getClassIfDefined("scala.AnyVal") - def isAnyValSubtype(sym: Symbol): Boolean = sym.isNonBottomSubClass(AnyValClass) - + def isDerivedValueClass(sym: Symbol): Boolean = + sym.isNonBottomSubClass(AnyValClass) && !definitions.ScalaValueClasses.contains(sym) } object MacroExpansionOf { diff --git a/compile/interface/src/main/scala/xsbt/ExtractAPI.scala b/compile/interface/src/main/scala/xsbt/ExtractAPI.scala index 7a0a78b2c..011479be6 100644 --- a/compile/interface/src/main/scala/xsbt/ExtractAPI.scala +++ b/compile/interface/src/main/scala/xsbt/ExtractAPI.scala @@ -205,14 +205,14 @@ class ExtractAPI[GlobalType <: CallbackGlobal](val global: GlobalType, val hasValueClassAsParameter: Boolean = { import MirrorHelper._ - s.asMethod.paramss.flatten map (_.info) exists (t => isAnyValSubtype(t.typeSymbol)) + s.asMethod.paramss.flatten map (_.info) exists (t => isDerivedValueClass(t.typeSymbol)) } def hasValueClassAsReturnType(tpe: Type): Boolean = tpe match { case PolyType(_, base) => hasValueClassAsReturnType(base) case MethodType(_, resultType) => hasValueClassAsReturnType(resultType) case Nullary(resultType) => hasValueClassAsReturnType(resultType) - case resultType => isAnyValSubtype(resultType.typeSymbol) + case resultType => isDerivedValueClass(resultType.typeSymbol) } val inspectPostErasure = hasValueClassAsParameter || hasValueClassAsReturnType(viewer(in).memberInfo(s))