Skip to content

Commit

Permalink
Fix semantics of null.asInstanceOf[Int] and other primitives.
Browse files Browse the repository at this point in the history
The Scala spec says that null.asInstanceOf[A] must return the
default value of type A. If A is a primitive, this means its
zero, i.e., false for Boolean, '\0' for Char and 0 for numbers.

This also fixes #53.
  • Loading branch information
sjrd committed Dec 18, 2013
1 parent f98211f commit b2418ed
Showing 1 changed file with 8 additions and 8 deletions.
16 changes: 8 additions & 8 deletions corejslib/scalajsenv.js
Expand Up @@ -304,28 +304,28 @@ var ScalaJS = {
return undefined;
},
uZ: function(value) {
return ScalaJS.as.java_lang_Boolean(value).value$1;
return null === value ? false : ScalaJS.as.java_lang_Boolean(value).value$1;
},
uC: function(value) {
return ScalaJS.as.java_lang_Character(value).value$1;
return null === value ? 0 : ScalaJS.as.java_lang_Character(value).value$1;
},
uB: function(value) {
return ScalaJS.as.java_lang_Byte(value).value$1;
return null === value ? 0 : ScalaJS.as.java_lang_Byte(value).value$1;
},
uS: function(value) {
return ScalaJS.as.java_lang_Short(value).value$2;
return null === value ? 0 : ScalaJS.as.java_lang_Short(value).value$2;
},
uI: function(value) {
return ScalaJS.as.java_lang_Integer(value).value$2;
return null === value ? 0 : ScalaJS.as.java_lang_Integer(value).value$2;
},
uJ: function(value) {
return ScalaJS.as.java_lang_Long(value).value$2;
return null === value ? 0 : ScalaJS.as.java_lang_Long(value).value$2;
},
uF: function(value) {
return ScalaJS.as.java_lang_Float(value).value$2;
return null === value ? 0.0 : ScalaJS.as.java_lang_Float(value).value$2;
},
uD: function(value) {
return ScalaJS.as.java_lang_Double(value).value$2;
return null === value ? 0.0 : ScalaJS.as.java_lang_Double(value).value$2;
}
}

Expand Down

0 comments on commit b2418ed

Please sign in to comment.