File tree Expand file tree Collapse file tree 3 files changed +11
-9
lines changed
compiler/src/dotty/tools/dotc/core Expand file tree Collapse file tree 3 files changed +11
-9
lines changed Original file line number Diff line number Diff line change @@ -191,8 +191,8 @@ class TypeUtils:
191191 case self : RefinedOrRecType => self.parent.stripRefinement
192192 case seld => self
193193
194- /** The constructors of this tyoe that that are applicable to `argTypes`, without needing
195- * an implicit conversion.
194+ /** The constructors of this type that are applicable to `argTypes`, without needing
195+ * an implicit conversion. Curried constructors are always excluded.
196196 * @param adaptVarargs if true, allow a constructor with just a varargs argument to
197197 * match an empty argument list.
198198 */
@@ -208,7 +208,7 @@ class TypeUtils:
208208 && atPhaseNoLater(Phases .elimRepeatedPhase)(constr.info.isVarArgsMethod)
209209 then // accept missing argument for varargs parameter
210210 paramInfos = paramInfos.init
211- argTypes.corresponds(paramInfos)(_ <:< _)
211+ argTypes.corresponds(paramInfos)(_ <:< _) && ! ctpe.resultType. isInstanceOf [ MethodType ]
212212 case _ =>
213213 false
214214 recur(constr.info)
Original file line number Diff line number Diff line change 1- // crash.scala
2- import scala .language .implicitConversions
3-
41class MyFunction (args : String )
52
63trait MyFunction0 [+ R ] extends MyFunction {
74 def apply (): R
85}
96
107def fromFunction0 [R ](f : Function0 [R ]): MyFunction0 [R ] = () => f() // error
8+
9+ class MyFunctionWithImplicit (implicit args : String )
10+
11+ trait MyFunction0WithImplicit [+ R ] extends MyFunctionWithImplicit {
12+ def apply (): R
13+ }
14+
15+ def fromFunction1 [R ](f : Function0 [R ]): MyFunction0WithImplicit [R ] = () => f() // error
Original file line number Diff line number Diff line change 1- // crash.scala
2- import scala .language .implicitConversions
3-
41class MyFunction (args : String * )
52
63trait MyFunction0 [+ R ] extends MyFunction {
You can’t perform that action at this time.
0 commit comments