diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2012-12-08 18:15:08 +0100 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2012-12-08 20:50:27 +0100 |
commit | 818a2e6597f23a82f848cd1f7d3b2e29129390a6 (patch) | |
tree | ff9629e82e14dccd410fb8d21e5224b69508a29d /test/files/run/t6555.check | |
parent | 0acb8a30c379f268e8a3e1340504530493a1a1dc (diff) | |
download | scala-818a2e6597f23a82f848cd1f7d3b2e29129390a6.tar.gz scala-818a2e6597f23a82f848cd1f7d3b2e29129390a6.tar.bz2 scala-818a2e6597f23a82f848cd1f7d3b2e29129390a6.zip |
SI-6555 Better parameter name retention
We were losing track of parameter names in two places:
1. Uncurry was using fresh names for the apply method
parameters during Function expansion. (The parameter names
in the tree were actually correct, they just had synthetic
symbols with "x$1" etc.)
2. When adding specialized overrides, the parameter names
of the overriden method were used, rather than the parameter
names from the overriding method in the class to which we are
adding methods.
The upshot of this is that when you're stopped in the debugger in
the body of, say, `(i: Int) => i * i`, you see `v1` rather than `i`.
This commit changes Uncurry and SpecializeTypes to remedy this.
Diffstat (limited to 'test/files/run/t6555.check')
-rw-r--r-- | test/files/run/t6555.check | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/test/files/run/t6555.check b/test/files/run/t6555.check new file mode 100644 index 0000000000..04117b7c2f --- /dev/null +++ b/test/files/run/t6555.check @@ -0,0 +1,22 @@ +[[syntax trees at end of specialize]] // newSource1 +package <empty> { + class Foo extends Object { + def <init>(): Foo = { + Foo.super.<init>(); + () + }; + private[this] val f: Int => Int = { + @SerialVersionUID(0) final <synthetic> class $anonfun extends scala.runtime.AbstractFunction1$mcII$sp with Serializable { + def <init>(): anonymous class $anonfun = { + $anonfun.super.<init>(); + () + }; + final def apply(param: Int): Int = $anonfun.this.apply$mcII$sp(param); + <specialized> def apply$mcII$sp(param: Int): Int = param + }; + (new anonymous class $anonfun(): Int => Int) + }; + <stable> <accessor> def f(): Int => Int = Foo.this.f + } +} + |