diff options
author | Paul Phillips <paulp@improving.org> | 2013-05-27 12:02:45 -0700 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2013-05-27 12:54:58 -0700 |
commit | a2e8f9e001356a993da4e01235c12583d97163d3 (patch) | |
tree | c52920518cedd2ed8c38682e014dbcab683b6597 /src/scalap/scala | |
parent | e42991f40707023d563f43bf66f3d8b9a637aa1b (diff) | |
download | scala-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/scalap/scala')
-rw-r--r-- | src/scalap/scala/tools/scalap/Classfile.scala | 10 | ||||
-rw-r--r-- | src/scalap/scala/tools/scalap/CodeWriter.scala | 4 |
2 files changed, 7 insertions, 7 deletions
diff --git a/src/scalap/scala/tools/scalap/Classfile.scala b/src/scalap/scala/tools/scalap/Classfile.scala index 8082b6befe..f62df285f9 100644 --- a/src/scalap/scala/tools/scalap/Classfile.scala +++ b/src/scalap/scala/tools/scalap/Classfile.scala @@ -32,7 +32,7 @@ class Classfile(in: ByteArrayReader) { var attribs: List[Attribute] = Nil var i = 0 while (i < n) { - attribs = Attribute(in.nextChar, in.nextBytes(in.nextInt)) :: attribs + attribs = Attribute(in.nextChar.toInt, in.nextBytes(in.nextInt)) :: attribs i = i + 1 } attribs @@ -43,7 +43,7 @@ class Classfile(in: ByteArrayReader) { var members: List[Member] = Nil var i = 0 while (i < n) { - members = Member(field, in.nextChar, in.nextChar, in.nextChar, readAttribs) :: members + members = Member(field, in.nextChar.toInt, in.nextChar.toInt, in.nextChar.toInt, readAttribs) :: members i = i + 1 } members @@ -54,7 +54,7 @@ class Classfile(in: ByteArrayReader) { var intfs: List[Int] = Nil var i = 0 while (i < n) { - intfs = in.nextChar :: intfs + intfs = in.nextChar.toInt :: intfs i = i + 1 } intfs @@ -81,7 +81,7 @@ class Classfile(in: ByteArrayReader) { case object Empty extends PoolEntry(0) { } val entries = { - val pool = new Array[PoolEntry](in.nextChar) + val pool = new Array[PoolEntry](in.nextChar.toInt) var i = 1 while (i < pool.length) { val tag = in.nextByte @@ -92,7 +92,7 @@ class Classfile(in: ByteArrayReader) { pool(i) = Empty } else pool(i) = tag match { - case CONSTANT_UTF8 => UTF8(in.nextUTF8(in.nextChar)) + case CONSTANT_UTF8 => UTF8(in.nextUTF8(in.nextChar.toInt)) case CONSTANT_UNICODE => in.skip(in.nextChar) ; Empty case CONSTANT_CLASS => ClassRef(in.nextChar) case CONSTANT_STRING => StringConst(in.nextChar) diff --git a/src/scalap/scala/tools/scalap/CodeWriter.scala b/src/scalap/scala/tools/scalap/CodeWriter.scala index fe594c14cf..168050096d 100644 --- a/src/scalap/scala/tools/scalap/CodeWriter.scala +++ b/src/scalap/scala/tools/scalap/CodeWriter.scala @@ -98,9 +98,9 @@ class CodeWriter(writer: Writer) { def print(value: Boolean): CodeWriter = print(String.valueOf(value)) - def print(value: Byte): CodeWriter = print(String.valueOf(value)) + def print(value: Byte): CodeWriter = print(String.valueOf(value.toInt)) - def print(value: Short): CodeWriter = print(String.valueOf(value)) + def print(value: Short): CodeWriter = print(String.valueOf(value.toInt)) def print(value: Char): CodeWriter = print(String.valueOf(value)) |