summaryrefslogtreecommitdiff
path: root/.gitattributes
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2013-11-23 09:45:19 +0100
committerJason Zaugg <jzaugg@gmail.com>2013-11-23 09:53:28 +0100
commit736613ea8a2fb3eede9bc01346a743c70b44eeaa (patch)
treef5edd5ee810a9a899be25c1412ba96df02a486a6 /.gitattributes
parentcb37548ef85d471951867b9f8a97cb9b9820fc66 (diff)
downloadscala-736613ea8a2fb3eede9bc01346a743c70b44eeaa.tar.gz
scala-736613ea8a2fb3eede9bc01346a743c70b44eeaa.tar.bz2
scala-736613ea8a2fb3eede9bc01346a743c70b44eeaa.zip
Substitute new parameter symbols into lambda body
Previously, new synthetic parameter symbols were created for the apply method parameters, but only used in its `MethodType`. The `ValDef` trees of the function, along with their symbols, were used directly as the parameter trees of the apply method. % cat sandbox/test.scala object Test { (x: Int) => { (y: Int) => ??? } } % scalac-hash v2.10.3 -Xprint:typer,uncurry -uniqid ../scala2/sandbox/test.scala | egrep 'syntax|\bx' [info] v2.10.3 => /Users/jason/usr/scala-v2.10.3-0-g88b5d19 [[syntax trees at end of typer]] // test.scala ((x#12152: Int#351) => x#12152)#12151 [[syntax trees at end of uncurry]] // test.scala final def apply#15952(x#12152: Int#351): Int#351 = x#12152 This approach dates back a long way: c64152bc3. @odersky tells me it was most likely due to insufficent substitution/cloning machinery at the time. % qbin/scalac -Xprint:typer,uncurry -uniqid ../scala2/sandbox/test.scala | egrep 'syntax|\bx' [[syntax trees at end of typer]] // test.scala ((x#13685: Int#1760) => x#13685)#13671 [[syntax trees at end of uncurry]] // test.scala final def apply#13959(x#13960: Int#1760): Int#1760 = x#13960 To make this work, I had to fix a problem in symbol substition; this was commited in the previous commit. In the enclosed test, at Uncurry, the symbol of the nested class `N` had a `ClassInfoType`, which listed as a parent `M[a.C]`. When we substituted the new method parameter symbol `a` for the eponymous function parameter symbol, this was not touched.
Diffstat (limited to '.gitattributes')
0 files changed, 0 insertions, 0 deletions