diff options
author | Shane Delmore <shane@delmore.io> | 2016-10-24 17:34:37 -0700 |
---|---|---|
committer | Shane Delmore <shane@delmore.io> | 2016-10-25 14:37:00 -0700 |
commit | 63f1a3c5d0149d173eb8f65405b5983591752229 (patch) | |
tree | f12825d3305e9752654de33ff2714695315edf42 /src/dotty/tools/dotc/typer | |
parent | 0ab12174a5a60616a0ef818a86b21adeb21395bb (diff) | |
download | dotty-63f1a3c5d0149d173eb8f65405b5983591752229.tar.gz dotty-63f1a3c5d0149d173eb8f65405b5983591752229.tar.bz2 dotty-63f1a3c5d0149d173eb8f65405b5983591752229.zip |
Improve error message for WrongNumberOfArgs
Diffstat (limited to 'src/dotty/tools/dotc/typer')
-rw-r--r-- | src/dotty/tools/dotc/typer/ErrorReporting.scala | 4 | ||||
-rw-r--r-- | src/dotty/tools/dotc/typer/TypeAssigner.scala | 6 | ||||
-rw-r--r-- | src/dotty/tools/dotc/typer/Typer.scala | 2 |
3 files changed, 6 insertions, 6 deletions
diff --git a/src/dotty/tools/dotc/typer/ErrorReporting.scala b/src/dotty/tools/dotc/typer/ErrorReporting.scala index 1d22dc646..a18c83ff8 100644 --- a/src/dotty/tools/dotc/typer/ErrorReporting.scala +++ b/src/dotty/tools/dotc/typer/ErrorReporting.scala @@ -49,8 +49,8 @@ object ErrorReporting { errorMsg(ex.show, ctx) } - def wrongNumberOfArgs(fntpe: Type, kind: String, expected: Int, pos: Position)(implicit ctx: Context) = - errorType(em"wrong number of ${kind}arguments for $fntpe, expected: $expected", pos) + def wrongNumberOfArgs(fntpe: Type, kind: String, expectedArgs: List[TypeParamInfo], actual: List[untpd.Tree], pos: Position)(implicit ctx: Context) = + errorType(WrongNumberOfArgs(fntpe, kind, expectedArgs, actual)(ctx), pos) class Errors(implicit ctx: Context) { diff --git a/src/dotty/tools/dotc/typer/TypeAssigner.scala b/src/dotty/tools/dotc/typer/TypeAssigner.scala index 861847b11..b1fed308c 100644 --- a/src/dotty/tools/dotc/typer/TypeAssigner.scala +++ b/src/dotty/tools/dotc/typer/TypeAssigner.scala @@ -314,7 +314,7 @@ trait TypeAssigner { val ownType = fn.tpe.widen match { case fntpe @ MethodType(_, ptypes) => if (sameLength(ptypes, args) || ctx.phase.prev.relaxedTyping) fntpe.instantiate(args.tpes) - else wrongNumberOfArgs(fn.tpe, "", ptypes.length, tree.pos) + else wrongNumberOfArgs(fn.tpe, "", fntpe.typeParams, args, tree.pos) case t => errorType(i"${err.exprStr(fn)} does not take parameters", tree.pos) } @@ -369,7 +369,7 @@ trait TypeAssigner { else { val argTypes = args.tpes if (sameLength(argTypes, paramNames) || ctx.phase.prev.relaxedTyping) pt.instantiate(argTypes) - else wrongNumberOfArgs(fn.tpe, "type ", pt.paramNames.length, tree.pos) + else wrongNumberOfArgs(fn.tpe, "type", pt.typeParams, args, tree.pos) } case _ => errorType(i"${err.exprStr(fn)} does not take type parameters", tree.pos) @@ -451,7 +451,7 @@ trait TypeAssigner { val ownType = if (hasNamedArg(args)) (tycon.tpe /: args)(refineNamed) else if (sameLength(tparams, args)) tycon.tpe.appliedTo(args.tpes) - else wrongNumberOfArgs(tycon.tpe, "type ", tparams.length, tree.pos) + else wrongNumberOfArgs(tycon.tpe, "type", tparams, args, tree.pos) tree.withType(ownType) } diff --git a/src/dotty/tools/dotc/typer/Typer.scala b/src/dotty/tools/dotc/typer/Typer.scala index 6fb0dd7c7..56c04c063 100644 --- a/src/dotty/tools/dotc/typer/Typer.scala +++ b/src/dotty/tools/dotc/typer/Typer.scala @@ -1035,7 +1035,7 @@ class Typer extends Namer with TypeAssigner with Applications with Implicits wit if (hasNamedArg(args)) typedNamedArgs(args) else { if (args.length != tparams.length) { - wrongNumberOfArgs(tpt1.tpe, "type ", tparams.length, tree.pos) + wrongNumberOfArgs(tpt1.tpe, "type", tparams, args, tree.pos) args = args.take(tparams.length) } def typedArg(arg: untpd.Tree, tparam: TypeParamInfo) = { |