diff --git a/compiler/src/dotty/tools/dotc/core/Types.scala b/compiler/src/dotty/tools/dotc/core/Types.scala index fefe1b5c1cd1..e51ad56e8a88 100644 --- a/compiler/src/dotty/tools/dotc/core/Types.scala +++ b/compiler/src/dotty/tools/dotc/core/Types.scala @@ -4518,7 +4518,9 @@ object Types { case et: ExprType => true case _ => false } - if (tp.cls.is(Trait) || zeroParams(tp.cls.primaryConstructor.info)) tp // !!! needs to be adapted once traits have parameters + // `ImplicitFunctionN` does not have constructors + val ctor = tp.cls.primaryConstructor + if (!ctor.exists || zeroParams(ctor.info)) tp else NoType case tp: AppliedType => zeroParamClass(tp.superType) diff --git a/tests/neg/i7980.scala b/tests/neg/i7980.scala new file mode 100644 index 000000000000..0a7e99f8d0c3 --- /dev/null +++ b/tests/neg/i7980.scala @@ -0,0 +1,7 @@ +trait Evidence[X] + +trait Trait[X : Evidence] + def method(x : X) : X + +given ev : Evidence[Int] = new Evidence[Int]{} +val crash : Trait[Int] = (x: Int) => x // error