@@ -41,14 +41,14 @@ trait BytecodeWriters {
41
41
def getFile (sym : Symbol , clsName : String , suffix : String ): AbstractFile =
42
42
getFile(outputDirectory(sym), clsName, suffix)
43
43
44
- def factoryNonJarBytecodeWriter (implicit ctx : Context ): BytecodeWriter = {
45
- val emitAsmp = ctx .base.settings.Ygenasmp .isSetByUser
46
- val doDump = ctx .base.settings.Ydumpclasses .isSetByUser
44
+ def factoryNonJarBytecodeWriter (implicit ctx0 : Context ): BytecodeWriter = {
45
+ val emitAsmp = ctx0 .base.settings.Ygenasmp .isSetByUser
46
+ val doDump = ctx0 .base.settings.Ydumpclasses .isSetByUser
47
47
(emitAsmp, doDump) match {
48
48
case (false , false ) => new ClassBytecodeWriter { }
49
- case (false , true ) => new ClassBytecodeWriter with DumpBytecodeWriter { }
50
- case (true , false ) => new ClassBytecodeWriter with AsmpBytecodeWriter
51
- case (true , true ) => new ClassBytecodeWriter with AsmpBytecodeWriter with DumpBytecodeWriter { }
49
+ case (false , true ) => new ClassBytecodeWriter with DumpBytecodeWriter { val ctx = ctx0 }
50
+ case (true , false ) => new ClassBytecodeWriter with AsmpBytecodeWriter { val ctx = ctx0 }
51
+ case (true , true ) => new ClassBytecodeWriter with AsmpBytecodeWriter with DumpBytecodeWriter { val ctx = ctx0 }
52
52
}
53
53
}
54
54
@@ -57,10 +57,12 @@ trait BytecodeWriters {
57
57
def close (): Unit = ()
58
58
}
59
59
60
- class DirectToJarfileWriter (jfile : JFile ) extends BytecodeWriter {
60
+ class DirectToJarfileWriter (jfile : JFile )(implicit protected val ctx : Context )
61
+ extends BytecodeWriter
62
+ with HasContext {
61
63
val jarMainAttrs = (
62
- if (settings.mainClass.isDefault) Nil
63
- else List (Name .MAIN_CLASS -> settings.mainClass.value)
64
+ if (ctx.base. settings.mainClass.isDefault) Nil
65
+ else List (Name .MAIN_CLASS -> ctx.base. settings.mainClass.value)
64
66
)
65
67
val writer = new Jar (jfile).jarWriter(jarMainAttrs : _* )
66
68
@@ -86,10 +88,10 @@ trait BytecodeWriters {
86
88
* their expansion by ASM is more readable.
87
89
*
88
90
* */
89
- trait AsmpBytecodeWriter extends BytecodeWriter {
91
+ trait AsmpBytecodeWriter extends BytecodeWriter with HasContext {
90
92
import dotty .tools .asm
91
93
92
- private val baseDir = Directory (settings.Ygenasmp .value).createDirectory()
94
+ private val baseDir = Directory (ctx.base. settings.Ygenasmp .value).createDirectory()
93
95
94
96
private def emitAsmp (jclassBytes : Array [Byte ], asmpFile : io.File ): Unit = {
95
97
val pw = asmpFile.printWriter()
@@ -127,8 +129,8 @@ trait BytecodeWriters {
127
129
}
128
130
}
129
131
130
- trait DumpBytecodeWriter extends BytecodeWriter {
131
- val baseDir = Directory (settings.Ydumpclasses .value).createDirectory()
132
+ trait DumpBytecodeWriter extends BytecodeWriter with HasContext {
133
+ val baseDir = Directory (ctx.base. settings.Ydumpclasses .value).createDirectory()
132
134
133
135
abstract override def writeClass (label : String , jclassName : String , jclassBytes : Array [Byte ], outfile : AbstractFile ): Unit = {
134
136
super .writeClass(label, jclassName, jclassBytes, outfile)
0 commit comments