@@ -234,6 +234,7 @@ object GenericSignatures {
234
234
235
235
@ noinline
236
236
def jsig (tp0 : Type , toplevel : Boolean = false , unboxedVCs : Boolean = true ): Unit = {
237
+ inline def jsig1 (tp0 : Type ): Unit = jsig(tp0, toplevel = false , unboxedVCs = true )
237
238
238
239
val tp = tp0.dealias
239
240
tp match {
@@ -242,41 +243,41 @@ object GenericSignatures {
242
243
val erasedUnderlying = fullErasure(ref.underlying.bounds.hi)
243
244
// don't emit type param name if the param is upper-bounded by a primitive type (including via a value class)
244
245
if erasedUnderlying.isPrimitiveValueType then
245
- jsig(erasedUnderlying, toplevel, unboxedVCs)
246
+ jsig(erasedUnderlying, toplevel = toplevel, unboxedVCs = unboxedVCs)
246
247
else typeParamSig(ref.paramName.lastPart)
247
248
248
249
case defn.ArrayOf (elemtp) =>
249
250
if (isGenericArrayElement(elemtp, isScala2 = false ))
250
- jsig (defn.ObjectType )
251
+ jsig1 (defn.ObjectType )
251
252
else
252
253
builder.append(ClassfileConstants .ARRAY_TAG )
253
254
elemtp match
254
- case TypeBounds (lo, hi) => jsig (hi.widenDealias)
255
- case _ => jsig (elemtp)
255
+ case TypeBounds (lo, hi) => jsig1 (hi.widenDealias)
256
+ case _ => jsig1 (elemtp)
256
257
257
258
case RefOrAppliedType (sym, pre, args) =>
258
259
if (sym == defn.PairClass && tupleArity(tp) > Definitions .MaxTupleArity )
259
- jsig (defn.TupleXXLClass .typeRef)
260
+ jsig1 (defn.TupleXXLClass .typeRef)
260
261
else if (isTypeParameterInSig(sym, sym0)) {
261
262
assert(! sym.isAliasType || sym.info.isLambdaSub, " Unexpected alias type: " + sym)
262
263
typeParamSig(sym.name.lastPart)
263
264
}
264
265
else if (defn.specialErasure.contains(sym))
265
- jsig (defn.specialErasure(sym).typeRef)
266
+ jsig1 (defn.specialErasure(sym).typeRef)
266
267
else if (sym == defn.UnitClass || sym == defn.BoxedUnitModule )
267
- jsig (defn.BoxedUnitClass .typeRef)
268
+ jsig1 (defn.BoxedUnitClass .typeRef)
268
269
else if (sym == defn.NothingClass )
269
270
builder.append(" Lscala/runtime/Nothing$;" )
270
271
else if (sym == defn.NullClass )
271
272
builder.append(" Lscala/runtime/Null$;" )
272
273
else if (sym.isPrimitiveValueClass)
273
- if (! unboxedVCs) jsig (defn.ObjectType )
274
- else if (sym == defn.UnitClass ) jsig (defn.BoxedUnitClass .typeRef)
274
+ if (! unboxedVCs) jsig1 (defn.ObjectType )
275
+ else if (sym == defn.UnitClass ) jsig1 (defn.BoxedUnitClass .typeRef)
275
276
else builder.append(defn.typeTag(sym.info))
276
277
else if (sym.isDerivedValueClass) {
277
278
if (unboxedVCs) {
278
279
val erasedUnderlying = fullErasure(tp)
279
- jsig(erasedUnderlying, toplevel)
280
+ jsig(erasedUnderlying, toplevel = toplevel, unboxedVCs = true )
280
281
} else classSig(sym, pre, args)
281
282
}
282
283
else if (defn.isSyntheticFunctionClass(sym)) {
@@ -286,20 +287,20 @@ object GenericSignatures {
286
287
else if sym.isClass then
287
288
classSig(sym, pre, args)
288
289
else
289
- jsig(erasure(tp), toplevel, unboxedVCs)
290
+ jsig(erasure(tp), toplevel = toplevel, unboxedVCs = unboxedVCs)
290
291
291
292
case ExprType (restpe) if toplevel =>
292
293
builder.append(" ()" )
293
294
methodResultSig(restpe)
294
295
295
296
case ExprType (restpe) =>
296
- jsig (defn.FunctionType (0 ).appliedTo(restpe))
297
+ jsig1 (defn.FunctionType (0 ).appliedTo(restpe))
297
298
298
299
case mtd : MethodOrPoly =>
299
300
val (tparams, vparams, rte) = collectMethodParams(mtd)
300
301
if (toplevel && ! sym0.isConstructor) polyParamSig(tparams)
301
302
builder.append('(' )
302
- for vparam <- vparams do jsig (vparam)
303
+ for vparam <- vparams do jsig1 (vparam)
303
304
builder.append(')' )
304
305
methodResultSig(rte)
305
306
@@ -316,7 +317,7 @@ object GenericSignatures {
316
317
val (reprParents, _) = splitIntersection(parents)
317
318
val repr =
318
319
reprParents.find(_.typeSymbol.is(TypeParam )).getOrElse(reprParents.head)
319
- jsig(repr, unboxedVCs = unboxedVCs)
320
+ jsig(repr, toplevel = false , unboxedVCs = unboxedVCs)
320
321
321
322
case ci : ClassInfo =>
322
323
val tParams = tp.typeParams
0 commit comments