Skip to content

Commit 3af67ba

Browse files
committed
Address review comments
1 parent 8aa59f8 commit 3af67ba

File tree

3 files changed

+11
-9
lines changed

3 files changed

+11
-9
lines changed

compiler/src/dotty/tools/dotc/core/TypeUtils.scala

+3-3
Original file line numberDiff line numberDiff 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)

tests/neg/i15855.scala

+8-3
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
1-
// crash.scala
2-
import scala.language.implicitConversions
3-
41
class MyFunction(args: String)
52

63
trait MyFunction0[+R] extends MyFunction {
74
def apply(): R
85
}
96

107
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

tests/run/i15855.scala

-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
// crash.scala
2-
import scala.language.implicitConversions
3-
41
class MyFunction(args: String*)
52

63
trait MyFunction0[+R] extends MyFunction {

0 commit comments

Comments
 (0)