diff options
author | Dmitry Petrashko <dark@d-d.me> | 2016-07-15 13:22:06 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-07-15 13:22:06 +0200 |
commit | f37e45a516ca97a27fed279c5da26574d2fe77db (patch) | |
tree | 268a2283e96ce363bf4fd9bca9d7a6be6e90ef7f /src/dotty/tools/dotc/typer/TypeAssigner.scala | |
parent | 18a1c206295fc85c795da48b3e737b88a2bb56e5 (diff) | |
parent | 7e00c724273d432c8900c0e8ec852bb77357958e (diff) | |
download | dotty-f37e45a516ca97a27fed279c5da26574d2fe77db.tar.gz dotty-f37e45a516ca97a27fed279c5da26574d2fe77db.tar.bz2 dotty-f37e45a516ca97a27fed279c5da26574d2fe77db.zip |
Merge pull request #1291 from nicolasstucki/implement-scala-dynamic
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 0344ae6c6..1394d2e3e 100644 --- a/src/dotty/tools/dotc/typer/TypeAssigner.scala +++ b/src/dotty/tools/dotc/typer/TypeAssigner.scala @@ -199,11 +199,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 } |