aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--compiler/src/dotty/tools/dotc/typer/Applications.scala11
-rw-r--r--tests/neg/i2033.scala21
2 files changed, 31 insertions, 1 deletions
diff --git a/compiler/src/dotty/tools/dotc/typer/Applications.scala b/compiler/src/dotty/tools/dotc/typer/Applications.scala
index de017961a..e9df12b42 100644
--- a/compiler/src/dotty/tools/dotc/typer/Applications.scala
+++ b/compiler/src/dotty/tools/dotc/typer/Applications.scala
@@ -450,7 +450,16 @@ trait Applications extends Compatibility { self: Typer with Dynamic =>
def typedArg(arg: Arg, formal: Type): Arg = arg
def addArg(arg: TypedArg, formal: Type) =
- ok = ok & isCompatible(argType(arg, formal), formal)
+ ok = ok & {
+ argType(arg, formal) match {
+ case ref: TermRef if ref.denot.isOverloaded =>
+ // in this case we could not resolve overloading because no alternative
+ // matches expected type
+ false
+ case argtpe =>
+ isCompatible(argtpe, formal)
+ }
+ }
def makeVarArg(n: Int, elemFormal: Type) = {}
def fail(msg: => Message, arg: Arg) =
ok = false
diff --git a/tests/neg/i2033.scala b/tests/neg/i2033.scala
new file mode 100644
index 000000000..b28a0d99e
--- /dev/null
+++ b/tests/neg/i2033.scala
@@ -0,0 +1,21 @@
+import java.io._
+import collection._
+object Test {
+ def check(obj: AnyRef): Unit = {
+ val bos = new ByteArrayOutputStream()
+ val out = new ObjectOutputStream(println) // error
+ val arr = bos toByteArray ()
+ val in = (())
+ val deser = ()
+ val lhs = mutable LinkedHashSet ()
+ check(lhs)
+ }
+}
+
+// minimization
+object Test2 {
+ class ObjectOutputStream(out: String) {
+ def this() = this("")
+ }
+ val out = new ObjectOutputStream(println) // error
+}