aboutsummaryrefslogtreecommitdiff
path: root/compiler/src/dotty/tools/backend
diff options
context:
space:
mode:
authorNicolas Stucki <nicolas.stucki@gmail.com>2017-04-05 13:22:41 +0200
committerGitHub <noreply@github.com>2017-04-05 13:22:41 +0200
commit4f4e37325fb5160905b2ba9dcdb95994c791390b (patch)
tree4be896ad32f9ca7618d160e58f705e55c3d93088 /compiler/src/dotty/tools/backend
parent586113dab51d95f2a606c83b2cd31563ac47a6cf (diff)
parent176f40a6daccbd5365988e66d84e44cba818e64a (diff)
downloaddotty-4f4e37325fb5160905b2ba9dcdb95994c791390b.tar.gz
dotty-4f4e37325fb5160905b2ba9dcdb95994c791390b.tar.bz2
dotty-4f4e37325fb5160905b2ba9dcdb95994c791390b.zip
Merge pull request #2025 from dotty-staging/fix-2024
Fix #2024: TypeApply can be a final apply of a recursive method.
Diffstat (limited to 'compiler/src/dotty/tools/backend')
-rw-r--r--compiler/src/dotty/tools/backend/jvm/GenBCode.scala22
1 files changed, 15 insertions, 7 deletions
diff --git a/compiler/src/dotty/tools/backend/jvm/GenBCode.scala b/compiler/src/dotty/tools/backend/jvm/GenBCode.scala
index 65dcb6c79..8fd6d1bc0 100644
--- a/compiler/src/dotty/tools/backend/jvm/GenBCode.scala
+++ b/compiler/src/dotty/tools/backend/jvm/GenBCode.scala
@@ -1,19 +1,18 @@
package dotty.tools.backend.jvm
import dotty.tools.dotc.CompilationUnit
-import dotty.tools.dotc.ast.Trees.{ValDef, PackageDef}
+import dotty.tools.dotc.ast.Trees.{PackageDef, ValDef}
import dotty.tools.dotc.ast.tpd
import dotty.tools.dotc.core.Phases.Phase
import dotty.tools.dotc.core.Names.TypeName
import scala.collection.mutable
-import scala.tools.asm.{CustomAttr, ClassVisitor, MethodVisitor, FieldVisitor}
+import scala.tools.asm.{ClassVisitor, CustomAttr, FieldVisitor, MethodVisitor}
import scala.tools.nsc.Settings
import scala.tools.nsc.backend.jvm._
import dotty.tools.dotc
import dotty.tools.dotc.backend.jvm.DottyPrimitives
import dotty.tools.dotc.transform.Erasure
-
import dotty.tools.dotc.interfaces
import java.util.Optional
@@ -27,14 +26,15 @@ import Symbols._
import Denotations._
import Phases._
import java.lang.AssertionError
-import java.io.{ File => JFile }
+import java.io.{FileOutputStream, File => JFile}
+
import scala.tools.asm
import scala.tools.asm.tree._
-import dotty.tools.dotc.util.{Positions, DotClass}
+import dotty.tools.dotc.util.{DotClass, Positions}
import tpd._
import StdNames._
-import scala.reflect.io.{Directory, PlainDirectory, AbstractFile}
+import scala.reflect.io.{AbstractFile, Directory, PlainDirectory}
import scala.tools.nsc.backend.jvm.opt.LocalOpt
class GenBCode extends Phase {
@@ -205,7 +205,15 @@ class GenBCodePipeline(val entryPoints: List[Symbol], val int: DottyBackendInter
if (claszSymbol.isClass) // @DarkDimius is this test needed here?
for (binary <- ctx.compilationUnit.pickled.get(claszSymbol.asClass)) {
val dataAttr = new CustomAttr(nme.TASTYATTR.toString, binary)
- (if (mirrorC ne null) mirrorC else plainC).visitAttribute(dataAttr)
+ val store = if (mirrorC ne null) mirrorC else plainC
+ store.visitAttribute(dataAttr)
+ if (ctx.settings.emitTasty.value) {
+ val outTastyFile = getFileForClassfile(outF, store.name, ".tasty").file
+ val fos = new FileOutputStream(outTastyFile, false)
+ fos.write(binary)
+ fos.close()
+
+ }
}
// -------------- bean info class, if needed --------------