diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2015-07-06 13:46:27 +1000 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2015-07-06 13:46:27 +1000 |
commit | 93dab7a6fe81227953d087813d5cab0d0634b9f2 (patch) | |
tree | 4e691e26acf1874b8027aace98e75be4d941e6b7 /src/main/scala/scala/async/internal | |
parent | 9ada5dcbf0c2dcd233069bc903f854580df968c3 (diff) | |
parent | 953414f53691ee4e0d9a34d304a0ebef60ce68f6 (diff) | |
download | scala-async-93dab7a6fe81227953d087813d5cab0d0634b9f2.tar.gz scala-async-93dab7a6fe81227953d087813d5cab0d0634b9f2.tar.bz2 scala-async-93dab7a6fe81227953d087813d5cab0d0634b9f2.zip |
Merge pull request #108 from retronym/ticket/106-2.10.x
Fix compiler crash with value class in result position
Diffstat (limited to 'src/main/scala/scala/async/internal')
-rw-r--r-- | src/main/scala/scala/async/internal/TransformUtils.scala | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/main/scala/scala/async/internal/TransformUtils.scala b/src/main/scala/scala/async/internal/TransformUtils.scala index 0b8cd00..da76c18 100644 --- a/src/main/scala/scala/async/internal/TransformUtils.scala +++ b/src/main/scala/scala/async/internal/TransformUtils.scala @@ -259,10 +259,11 @@ private[async] trait TransformUtils { if (tp.typeSymbol.isDerivedValueClass) { val argZero = mkZero(tp.memberType(tp.typeSymbol.derivedValueClassUnbox).resultType) val target: Tree = gen.mkAttributedSelect( - typer.typedPos(macroPos)( + callSiteTyper.typedPos(macroPos)( New(TypeTree(tp.baseType(tp.typeSymbol)))), tp.typeSymbol.primaryConstructor) val zero = gen.mkMethodCall(target, argZero :: Nil) - gen.mkCast(zero, tp) + // restore the original type which we might otherwise have weakened with `baseType` above + callSiteTyper.typedPos(macroPos)(gen.mkCast(zero, tp)) } else { gen.mkZero(tp) } |