summaryrefslogtreecommitdiff
path: root/src/compiler
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@epfl.ch>2009-10-09 08:35:12 +0000
committerLukas Rytz <lukas.rytz@epfl.ch>2009-10-09 08:35:12 +0000
commit6fb95453d130c5423f0cc2c8b5a6e7108aa4b253 (patch)
treea89ed600c7e2f8cb4ceda014ad796135a757bad4 /src/compiler
parent054c404c03847d205dc67668ac34b1d722e1f414 (diff)
downloadscala-6fb95453d130c5423f0cc2c8b5a6e7108aa4b253.tar.gz
scala-6fb95453d130c5423f0cc2c8b5a6e7108aa4b253.tar.bz2
scala-6fb95453d130c5423f0cc2c8b5a6e7108aa4b253.zip
merging msil (r19001) compiler changes to trunk
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/scala/tools/nsc/backend/msil/GenMSIL.scala8
-rw-r--r--src/compiler/scala/tools/nsc/transform/TailCalls.scala2
2 files changed, 8 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/msil/GenMSIL.scala b/src/compiler/scala/tools/nsc/backend/msil/GenMSIL.scala
index a94d4c100a..2163940ea5 100644
--- a/src/compiler/scala/tools/nsc/backend/msil/GenMSIL.scala
+++ b/src/compiler/scala/tools/nsc/backend/msil/GenMSIL.scala
@@ -1214,7 +1214,13 @@ abstract class GenMSIL extends SubComponent {
needAdditionalRet = false
- val currentLineNr = instr.pos.line
+ val currentLineNr = try {
+ instr.pos.line
+ } catch {
+ case _: UnsupportedOperationException =>
+ log("Warning: wrong position in: " + method)
+ lastLineNr
+ }
if (currentLineNr != lastLineNr) {
mcode.setPosition(currentLineNr)
diff --git a/src/compiler/scala/tools/nsc/transform/TailCalls.scala b/src/compiler/scala/tools/nsc/transform/TailCalls.scala
index 5a26f22db9..95643e5fd4 100644
--- a/src/compiler/scala/tools/nsc/transform/TailCalls.scala
+++ b/src/compiler/scala/tools/nsc/transform/TailCalls.scala
@@ -192,7 +192,7 @@ abstract class TailCalls extends Transform
}
)
- if (!isTransformed && tailrecRequired(dd))
+ if (!forMSIL && !isTransformed && tailrecRequired(dd))
unit.error(dd.pos, "could not optimize @tailrec annotated method")
log("Leaving DefDef: " + name)