aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/typer/TypeAssigner.scala
diff options
context:
space:
mode:
authorNicolas Stucki <nicolas.stucki@gmail.com>2016-05-30 09:20:21 +0200
committerNicolas Stucki <nicolas.stucki@gmail.com>2016-07-07 11:10:44 +0200
commit75da0358fd7866f3dccdfcf4fbeae9af8ccc69f3 (patch)
tree142087645d00858f20eaead2f805afb333d2bddc /src/dotty/tools/dotc/typer/TypeAssigner.scala
parent07fd8a357ed660ef15163efb2788928fec290fdd (diff)
downloaddotty-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.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 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
}