summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/symtab/classfile/ICodeReader.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2013-05-27 12:02:45 -0700
committerPaul Phillips <paulp@improving.org>2013-05-27 12:54:58 -0700
commita2e8f9e001356a993da4e01235c12583d97163d3 (patch)
treec52920518cedd2ed8c38682e014dbcab683b6597 /src/compiler/scala/tools/nsc/symtab/classfile/ICodeReader.scala
parente42991f40707023d563f43bf66f3d8b9a637aa1b (diff)
downloadscala-a2e8f9e001356a993da4e01235c12583d97163d3.tar.gz
scala-a2e8f9e001356a993da4e01235c12583d97163d3.tar.bz2
scala-a2e8f9e001356a993da4e01235c12583d97163d3.zip
Make all numeric coercions explicit.
Optimistically, this is preparation for a day when we don't let numeric types drift with the winds. Even without the optimism it's a good idea. It flushed out an undocumented change in the math package object relative to the methods being forwarded (a type is widened from what is returned in java) so I documented the intentionality of it. Managing type coercions manually is a bit tedious, no doubt, but it's not tedious enough to warrant abandoning type safety just because java did it.
Diffstat (limited to 'src/compiler/scala/tools/nsc/symtab/classfile/ICodeReader.scala')
-rw-r--r--src/compiler/scala/tools/nsc/symtab/classfile/ICodeReader.scala3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/symtab/classfile/ICodeReader.scala b/src/compiler/scala/tools/nsc/symtab/classfile/ICodeReader.scala
index 52ebb3b0a2..01a117895f 100644
--- a/src/compiler/scala/tools/nsc/symtab/classfile/ICodeReader.scala
+++ b/src/compiler/scala/tools/nsc/symtab/classfile/ICodeReader.scala
@@ -505,7 +505,7 @@ abstract class ICodeReader extends ClassfileParser {
// TODO, this is just a place holder. A real implementation must parse the class constant entry
debuglog("Found JVM invokedynamic instructionm, inserting place holder ICode INVOKE_DYNAMIC.")
containsInvokeDynamic = true
- val poolEntry = in.nextChar
+ val poolEntry = in.nextChar.toInt
in.skip(2)
code.emit(INVOKE_DYNAMIC(poolEntry))
@@ -919,6 +919,7 @@ abstract class ICodeReader extends ClassfileParser {
}
/** Return the local at given index, with the given type. */
+ def getLocal(idx: Char, kind: TypeKind): Local = getLocal(idx.toInt, kind)
def getLocal(idx: Int, kind: TypeKind): Local = {
assert(idx < maxLocals, "Index too large for local variable.")