diff options
-rw-r--r-- | src/compiler/scala/tools/nsc/transform/TailCalls.scala | 2 | ||||
-rw-r--r-- | test/files/pos/selftails.scala | 23 |
2 files changed, 24 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/TailCalls.scala b/src/compiler/scala/tools/nsc/transform/TailCalls.scala index d911b22ebc..cf3b2db53b 100644 --- a/src/compiler/scala/tools/nsc/transform/TailCalls.scala +++ b/src/compiler/scala/tools/nsc/transform/TailCalls.scala @@ -193,7 +193,7 @@ abstract class TailCalls extends Transform isTransformed = true val newThis = newCtx.currentMethod . newValue (tree.pos, nme.THIS) - . setInfo (currentClass.tpe) + . setInfo (currentClass.typeOfThis) . setFlag (Flags.SYNTHETIC) typed(atPos(tree.pos)(Block( diff --git a/test/files/pos/selftails.scala b/test/files/pos/selftails.scala new file mode 100644 index 0000000000..a4253b80c7 --- /dev/null +++ b/test/files/pos/selftails.scala @@ -0,0 +1,23 @@ +package net.liftweb.util + +/** +* This trait adds functionality to Scala standard types +*/ +trait BasicTypesHelpers { self: StringHelpers with ControlHelpers => + + /** + * Compare two arrays of Byte for byte equality. + * @return true if two Byte arrays contain the same bytes + */ + def isEq(a: Array[Byte], b: Array[Byte]) = { + def eq(a: Array[Byte], b: Array[Byte], pos: Int, len: Int): Boolean = { + if (pos == len) true + else if (a(pos) != b(pos)) false + else eq(a , b, pos + 1, len) + } + a.length == b.length && eq(a, b, 0, a.length) + } +} + +trait StringHelpers +trait ControlHelpers |