diff options
author | Nicolas Stucki <nicolas.stucki@gmail.com> | 2016-05-30 09:20:21 +0200 |
---|---|---|
committer | Nicolas Stucki <nicolas.stucki@gmail.com> | 2016-07-07 11:10:44 +0200 |
commit | 75da0358fd7866f3dccdfcf4fbeae9af8ccc69f3 (patch) | |
tree | 142087645d00858f20eaead2f805afb333d2bddc /src/dotty/tools/dotc/typer/TypeAssigner.scala | |
parent | 07fd8a357ed660ef15163efb2788928fec290fdd (diff) | |
download | dotty-75da0358fd7866f3dccdfcf4fbeae9af8ccc69f3.tar.gz dotty-75da0358fd7866f3dccdfcf4fbeae9af8ccc69f3.tar.bz2 dotty-75da0358fd7866f3dccdfcf4fbeae9af8ccc69f3.zip |
Fix #657: Add scala.Dynamic support.
Diffstat (limited to 'src/dotty/tools/dotc/typer/TypeAssigner.scala')
-rw-r--r-- | src/dotty/tools/dotc/typer/TypeAssigner.scala | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/dotty/tools/dotc/typer/TypeAssigner.scala b/src/dotty/tools/dotc/typer/TypeAssigner.scala index 995fa43ca..5e65df75e 100644 --- a/src/dotty/tools/dotc/typer/TypeAssigner.scala +++ b/src/dotty/tools/dotc/typer/TypeAssigner.scala @@ -196,11 +196,16 @@ trait TypeAssigner { def selectionType(site: Type, name: Name, pos: Position)(implicit ctx: Context): Type = { val mbr = site.member(name) if (reallyExists(mbr)) site.select(name, mbr) - else { + else if (site.derivesFrom(defn.DynamicClass) && !Dynamic.isDynamicMethod(name)) { + TryDynamicCallType + } else { if (!site.isErroneous) { ctx.error( if (name == nme.CONSTRUCTOR) d"$site does not have a constructor" - else d"$name is not a member of $site", pos) + else if (site.derivesFrom(defn.DynamicClass)) { + d"$name is not a member of $site\n" + + "possible cause: maybe a wrong Dynamic method signature?" + } else d"$name is not a member of $site", pos) } ErrorType } |