blob: f754e70838878b0777dc505a9ad1646ce07abe0f (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
/* Scala.js compiler
* Copyright 2013 LAMP/EPFL
* @author Sébastien Doeraene
*/
package scala.scalajs.compiler
import scala.tools.nsc._
import scala.tools.nsc.io.AbstractFile
import scala.reflect.internal.pickling.PickleBuffer
import java.io._
import scala.scalajs.ir
import ir.Infos._
/** Send JS ASTs to files
*
* @author Sébastien Doeraene
*/
trait GenJSFiles extends SubComponent { self: GenJSCode =>
import global._
import jsAddons._
def genIRFile(cunit: CompilationUnit, sym: Symbol, tree: ir.Trees.ClassDef,
classInfo: ClassInfo): Unit = {
val outfile = getFileFor(cunit, sym, ".sjsir")
val output = outfile.bufferedOutput
try {
ir.InfoSerializers.serialize(output, classInfo)
ir.Serializers.serialize(output, tree)
} finally {
output.close()
}
}
private def getFileFor(cunit: CompilationUnit, sym: Symbol,
suffix: String) = {
val baseDir: AbstractFile =
settings.outputDirs.outputDirFor(cunit.source.file)
val pathParts = sym.fullName.split("[./]")
val dir = (baseDir /: pathParts.init)(_.subdirectoryNamed(_))
var filename = pathParts.last
if (sym.isModuleClass && !sym.isImplClass)
filename = filename + nme.MODULE_SUFFIX_STRING
dir fileNamed (filename + suffix)
}
}
|