diff options
author | Martin Odersky <odersky@gmail.com> | 2012-09-24 16:49:15 +0200 |
---|---|---|
committer | Grzegorz Kossakowski <grzegorz.kossakowski@gmail.com> | 2012-10-03 13:44:16 +0200 |
commit | ea9e4ec55ebb5dd6aaf22862622add7608e3f7a0 (patch) | |
tree | eca1373dff02f6b835f62cdee3028e3de60c8d09 | |
parent | ef934492df93e0fd3d78e7a3d4f9cccaf765d4d5 (diff) | |
download | scala-ea9e4ec55ebb5dd6aaf22862622add7608e3f7a0.tar.gz scala-ea9e4ec55ebb5dd6aaf22862622add7608e3f7a0.tar.bz2 scala-ea9e4ec55ebb5dd6aaf22862622add7608e3f7a0.zip |
Fixed problem in SI-6408
Fixed problem reported in comment, where inner classes of value classe caused a compiler crash.
-rw-r--r-- | src/compiler/scala/tools/nsc/transform/Constructors.scala | 3 | ||||
-rw-r--r-- | test/files/run/t6408.scala | 11 |
2 files changed, 13 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/Constructors.scala b/src/compiler/scala/tools/nsc/transform/Constructors.scala index 23b15a9033..4b9585bb93 100644 --- a/src/compiler/scala/tools/nsc/transform/Constructors.scala +++ b/src/compiler/scala/tools/nsc/transform/Constructors.scala @@ -127,7 +127,8 @@ abstract class Constructors extends Transform with ast.TreeDSL { import CODE._ val result = mkAssign(to, Ident(from)) - if (from.name != nme.OUTER) result + if (from.name != nme.OUTER || + from.tpe.typeSymbol.isPrimitiveValueClass) result else localTyper.typedPos(to.pos) { IF (from OBJ_EQ NULL) THEN Throw(NullPointerExceptionClass.tpe) ELSE result } diff --git a/test/files/run/t6408.scala b/test/files/run/t6408.scala new file mode 100644 index 0000000000..ff17480b35 --- /dev/null +++ b/test/files/run/t6408.scala @@ -0,0 +1,11 @@ +class X(val i: Int) extends AnyVal { + class Inner(val q: Int) { + def plus = i + q + } +} + +object Test extends App { + val x = new X(11) + val i = new x.Inner(22) + assert(i.plus == 33) +} |