diff --git a/compiler/src/dotty/tools/dotc/transform/GenericSignatures.scala b/compiler/src/dotty/tools/dotc/transform/GenericSignatures.scala index 9024296eae89..9392d9038574 100644 --- a/compiler/src/dotty/tools/dotc/transform/GenericSignatures.scala +++ b/compiler/src/dotty/tools/dotc/transform/GenericSignatures.scala @@ -291,7 +291,7 @@ object GenericSignatures { case PolyType(tparams, mtpe: MethodType) => assert(tparams.nonEmpty) - if (toplevel) polyParamSig(tparams) + if (toplevel && !sym0.isConstructor) polyParamSig(tparams) jsig(mtpe) // Nullary polymorphic method diff --git a/tests/generic-java-signatures/i10834.check b/tests/generic-java-signatures/i10834.check new file mode 100644 index 000000000000..24413b10401f --- /dev/null +++ b/tests/generic-java-signatures/i10834.check @@ -0,0 +1,6 @@ +0 + +public A1(X) +0 + +public A2(java.lang.Object) diff --git a/tests/generic-java-signatures/i10834.scala b/tests/generic-java-signatures/i10834.scala new file mode 100644 index 000000000000..91fb9d8c6ad1 --- /dev/null +++ b/tests/generic-java-signatures/i10834.scala @@ -0,0 +1,16 @@ +class A1[X](val x: X) +class A2[F[_]](val x: F[String]) + +object Test { + def test(clazz: Class[?]): Unit = { + val List(constructor) = clazz.getConstructors().toList + println(constructor.getTypeParameters().length) + println(constructor.getTypeParameters().mkString(", ")) + println(constructor.toGenericString()) + } + + def main(args: Array[String]): Unit = { + test(classOf[A1[?]]) + test(classOf[A2[?]]) + } +}