aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/typer/TypeAssigner.scala
diff options
context:
space:
mode:
authorDmitry Petrashko <dark@d-d.me>2016-07-15 13:22:06 +0200
committerGitHub <noreply@github.com>2016-07-15 13:22:06 +0200
commitf37e45a516ca97a27fed279c5da26574d2fe77db (patch)
tree268a2283e96ce363bf4fd9bca9d7a6be6e90ef7f /src/dotty/tools/dotc/typer/TypeAssigner.scala
parent18a1c206295fc85c795da48b3e737b88a2bb56e5 (diff)
parent7e00c724273d432c8900c0e8ec852bb77357958e (diff)
downloaddotty-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.scala9
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
}