diff options
author | Martin Odersky <odersky@gmail.com> | 2014-12-05 19:25:45 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2014-12-05 19:26:24 +0100 |
commit | fc23083675e4b194e42a0c310b1c43ab5d3aed2e (patch) | |
tree | 0d0895bebf4917a862dbb89ca2d662155acef9b9 /src/dotty/tools/dotc/core/Definitions.scala | |
parent | 8336a0ddbe78b363394c48e3407b79c72008d2b3 (diff) | |
download | dotty-fc23083675e4b194e42a0c310b1c43ab5d3aed2e.tar.gz dotty-fc23083675e4b194e42a0c310b1c43ab5d3aed2e.tar.bz2 dotty-fc23083675e4b194e42a0c310b1c43ab5d3aed2e.zip |
Fix by-name arguments
Previous scheme relying on Attachments was fragile. We now use
a dummy method application, which transmits info reliably to
Erasure.
Diffstat (limited to 'src/dotty/tools/dotc/core/Definitions.scala')
-rw-r--r-- | src/dotty/tools/dotc/core/Definitions.scala | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/dotty/tools/dotc/core/Definitions.scala b/src/dotty/tools/dotc/core/Definitions.scala index 895d41516..311b27717 100644 --- a/src/dotty/tools/dotc/core/Definitions.scala +++ b/src/dotty/tools/dotc/core/Definitions.scala @@ -172,6 +172,11 @@ class Definitions { def ObjectMethods = List(Object_eq, Object_ne, Object_synchronized, Object_clone, Object_finalize, Object_notify, Object_notifyAll, Object_wait, Object_waitL, Object_waitLI) + /** Dummy method needed by elimByName */ + lazy val dummyApply = newPolyMethod( + RootClass, nme.dummyApply, 1, + pt => MethodType(List(FunctionType(Nil, PolyParam(pt, 0))), PolyParam(pt, 0))) + lazy val NotNullClass = ctx.requiredClass("scala.NotNull") lazy val NothingClass: ClassSymbol = newCompleteClassSymbol( |