mirror of https://github.com/sbt/sbt.git
determine bytecode type with transformedType
... not exitingPostErasure, as this phase-travel crashes the compile (it's only really meant for going back in time, right?)
This commit is contained in:
parent
27039e2b3c
commit
49431eb6f8
|
|
@ -225,10 +225,10 @@ class ExtractAPI[GlobalType <: CallbackGlobal](val global: GlobalType,
|
|||
|
||||
def build(t: Type, typeParams: Array[xsbti.api.TypeParameter], valueParameters: List[xsbti.api.ParameterList]): List[xsbti.api.Def] =
|
||||
{
|
||||
def parameterList(syms: List[Symbol]): xsbti.api.ParameterList =
|
||||
def parameterList(syms: List[Symbol], erase: Boolean = false): xsbti.api.ParameterList =
|
||||
{
|
||||
val isImplicitList = syms match { case head :: _ => isImplicit(head); case _ => false }
|
||||
new xsbti.api.ParameterList(syms.map(parameterS).toArray, isImplicitList)
|
||||
new xsbti.api.ParameterList(syms.map(parameterS(erase)).toArray, isImplicitList)
|
||||
}
|
||||
t match {
|
||||
case PolyType(typeParams0, base) =>
|
||||
|
|
@ -249,7 +249,7 @@ class ExtractAPI[GlobalType <: CallbackGlobal](val global: GlobalType,
|
|||
build(resultType, typeParams, parameterList(params) :: valueParameters)
|
||||
val afterErasure =
|
||||
if (inspectPostErasure)
|
||||
build(resultType, typeParams, global exitingPostErasure (parameterList(mType.params) :: valueParameters))
|
||||
build(resultType, typeParams, parameterList(mType.params, erase = true) :: valueParameters)
|
||||
else
|
||||
Nil
|
||||
|
||||
|
|
@ -277,7 +277,7 @@ class ExtractAPI[GlobalType <: CallbackGlobal](val global: GlobalType,
|
|||
val beforeErasure = makeDef(processType(in, dropConst(returnType)))
|
||||
val afterErasure =
|
||||
if (inspectPostErasure) {
|
||||
val erasedReturn = dropConst(global exitingPostErasure viewer(in).memberInfo(s)) map {
|
||||
val erasedReturn = dropConst(transformedType(viewer(in).memberInfo(s))) map {
|
||||
case MethodType(_, r) => r
|
||||
case other => other
|
||||
}
|
||||
|
|
@ -287,8 +287,10 @@ class ExtractAPI[GlobalType <: CallbackGlobal](val global: GlobalType,
|
|||
beforeErasure :: afterErasure
|
||||
}
|
||||
}
|
||||
def parameterS(s: Symbol): xsbti.api.MethodParameter =
|
||||
makeParameter(simpleName(s), s.info, s.info.typeSymbol, s)
|
||||
def parameterS(erase: Boolean)(s: Symbol): xsbti.api.MethodParameter = {
|
||||
val tp = if (erase) transformedType(s.info) else s.info
|
||||
makeParameter(simpleName(s), tp, tp.typeSymbol, s)
|
||||
}
|
||||
|
||||
// paramSym is only for 2.8 and is to determine if the parameter has a default
|
||||
def makeParameter(name: String, tpe: Type, ts: Symbol, paramSym: Symbol): xsbti.api.MethodParameter =
|
||||
|
|
|
|||
Loading…
Reference in New Issue