summaryrefslogtreecommitdiff
path: root/test/partest.bat
diff options
context:
space:
mode:
authorEugene Burmako <xeno.by@gmail.com>2012-08-03 17:13:18 +0200
committerEugene Burmako <xeno.by@gmail.com>2012-08-13 21:03:19 +0200
commit64138082a4f1bb4c864d85660d350f61c81e7fd7 (patch)
tree40203e3ddc34b43171b0023ed8b4edef05eecd4a /test/partest.bat
parent613970af6b6083d55d98bdfeb1a867e5236fcd90 (diff)
downloadscala-64138082a4f1bb4c864d85660d350f61c81e7fd7.tar.gz
scala-64138082a4f1bb4c864d85660d350f61c81e7fd7.tar.bz2
scala-64138082a4f1bb4c864d85660d350f61c81e7fd7.zip
SI-5940 impls are no longer in macro def pickles
The first officially released version of macros persisted macro def -> impl bindings across compilation runs using a neat trick. The right-hand side of macro definition (which contains a reference to an impl) was typechecked and then put verbatim into an annotation on macro definition. This solution is very simple, but unfortunately it's also lacking. If we use it then signatures of macro defs become transitively dependent on scala-reflect.jar (because they refer to macro impls, and macro impls refer to scala.reflect.macros.Context defined in scala-reflect.jar). More details can be found in https://issues.scala-lang.org/browse/SI-5940. Therefore we have to avoid putting macro impls into binding pickles and come up with our own serialization format. Situation is further complicated by the fact that it's not enough to just pickle impl's class and method names, because macro expansion needs knowledge about the shape of impl's signature (which we can't pickle). Hence we precompute necessary stuff (e.g. the layout of type parameters) when compiling macro defs.
Diffstat (limited to 'test/partest.bat')
0 files changed, 0 insertions, 0 deletions