File tree Expand file tree Collapse file tree 4 files changed +37
-1
lines changed
compiler/src/dotty/tools/dotc/typer Expand file tree Collapse file tree 4 files changed +37
-1
lines changed Original file line number Diff line number Diff line change @@ -142,7 +142,8 @@ trait TypeAssigner {
142
142
val mbr = qualType.findMember(name, pre)
143
143
if (reallyExists(mbr))
144
144
qualType.select(name, mbr)
145
- else if (qualType.derivesFrom(defn.DynamicClass ) && name.isTermName && ! Dynamic .isDynamicMethod(name))
145
+ else if (qualType.derivesFrom(defn.DynamicClass ) && name.isTermName && ! Dynamic .isDynamicMethod(name) &&
146
+ ! (name == nme.apply && tree.span.isSynthetic && Dynamic .isDynamicMethod(qual1.symbol.name)))
146
147
TryDynamicCallType
147
148
else if (qualType.isErroneous || name.toTermName == nme.ERROR )
148
149
UnspecifiedErrorType
Original file line number Diff line number Diff line change
1
+ import scala .language .dynamics
2
+
3
+ class Foo extends Dynamic {
4
+ def applyDynamic (arg : Any ): Foo = ???
5
+ }
6
+ object F {
7
+ val foo = new Foo
8
+ def baz = foo.blah(43 ) // error: method applyDynamic in class Foo does not take more parameters
9
+ }
Original file line number Diff line number Diff line change
1
+ import scala .language .dynamics
2
+
3
+ class Foo extends Dynamic {
4
+ def applyDynamic (arg : Any ): Bar = ???
5
+ }
6
+ class Bar extends Dynamic {
7
+ def applyDynamic (arg : Any )(x : Int ): Int = ???
8
+ }
9
+ object F {
10
+ val foo = new Foo
11
+ def baz = foo.blah(43 ) // error: method applyDynamic in class Foo does not take more parameters
12
+ def qux = foo.blah.blah(43 ) // error: value selectDynamic is not a member of Foo
13
+ def quxx = foo.blah().blah(43 ) // error: method applyDynamic in class Foo does not take more parameters
14
+ }
Original file line number Diff line number Diff line change
1
+ import scala .language .dynamics
2
+
3
+ class Foo extends Dynamic {
4
+ def applyDynamic (name : String )(): Bar = ???
5
+ }
6
+
7
+ class Bar extends Dynamic {
8
+ def applyDynamic (name : String )(x : Int ) = ???
9
+ }
10
+
11
+ val foo = new Foo
12
+ def baz = foo.blah().apply(42 )
You can’t perform that action at this time.
0 commit comments