File tree 3 files changed +11
-9
lines changed
compiler/src/dotty/tools/dotc/core
3 files changed +11
-9
lines changed Original file line number Diff line number Diff line change @@ -127,8 +127,8 @@ class TypeUtils:
127
127
case mt : MethodType => mt.isImplicitMethod || mt.resType.takesImplicitParams
128
128
case _ => false
129
129
130
- /** The constructors of this tyoe that that are applicable to `argTypes`, without needing
131
- * an implicit conversion.
130
+ /** The constructors of this type that are applicable to `argTypes`, without needing
131
+ * an implicit conversion. Curried constructors are always excluded.
132
132
* @param adaptVarargs if true, allow a constructor with just a varargs argument to
133
133
* match an empty argument list.
134
134
*/
@@ -144,7 +144,7 @@ class TypeUtils:
144
144
&& atPhaseNoLater(Phases .elimRepeatedPhase)(constr.info.isVarArgsMethod)
145
145
then // accept missing argument for varargs parameter
146
146
paramInfos = paramInfos.init
147
- argTypes.corresponds(paramInfos)(_ <:< _)
147
+ argTypes.corresponds(paramInfos)(_ <:< _) && ! ctpe.resultType. isInstanceOf [ MethodType ]
148
148
case _ =>
149
149
false
150
150
recur(constr.info)
Original file line number Diff line number Diff line change 1
- // crash.scala
2
- import scala .language .implicitConversions
3
-
4
1
class MyFunction (args : String )
5
2
6
3
trait MyFunction0 [+ R ] extends MyFunction {
7
4
def apply (): R
8
5
}
9
6
10
7
def 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
-
4
1
class MyFunction (args : String * )
5
2
6
3
trait MyFunction0 [+ R ] extends MyFunction {
You can’t perform that action at this time.
0 commit comments