8000 Merge pull request #4920 from gzm0/better-printer · scala-js/scala-js@0a5844e · GitHub
[go: up one dir, main page]

Skip to content

Commit 0a5844e

Browse files
authored
Merge pull request #4920 from gzm0/better-printer
Printer improvements to fuse JS emitting and printing
2 parents 188b945 + cae909a commit 0a5844e

File tree

7 files changed

+265
-74
lines changed

7 files changed

+265
-74
lines changed

linker/shared/src/main/scala/org/scalajs/linker/backend/BasicLinkerBackend.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ private object BasicLinkerBackend {
283283
val jsCodeWriter = new ByteArrayWriter()
284284
val printer = new Printers.JSTreePrinter(jsCodeWriter)
285285

286-
printer.printTopLevelTree(tree)
286+
printer.printStat(tree)
287287

288288
new PrintedTree(jsCodeWriter.toByteArray(), SourceMapWriter.Fragment.Empty)
289289
}
@@ -321,7 +321,7 @@ private object BasicLinkerBackend {
321321
val smFragmentBuilder = new SourceMapWriter.FragmentBuilder()
322322
val printer = new Printers.JSTreePrinterWithSourceMap(jsCodeWriter, smFragmentBuilder)
323323

324-
printer.printTopLevelTree(tree)
324+
printer.printStat(tree)
325325
smFragmentBuilder.complete()
326326

327327
new PrintedTree(jsCodeWriter.toByteArray(), smFragmentBuilder.result())

linker/shared/src/main/scala/org/scalajs/linker/backend/emitter/ClassEmitter.scala

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -683,12 +683,12 @@ private[emitter] final class ClassEmitter(sjsGen: SJSGen) {
683683

684684
def genInstanceTests(className: ClassName, kind: ClassKind)(
685685
implicit moduleContext: ModuleContext,
686-
globalKnowledge: GlobalKnowledge, pos: Position): WithGlobals[js.Tree] = {
686+
globalKnowledge: GlobalKnowledge, pos: Position): WithGlobals[List[js.Tree]] = {
687687
for {
688688
single <- genSingleInstanceTests(className, kind)
689689
array <- genArrayInstanceTests(className)
690690
} yield {
691-
js.Block(single ::: array)
691+
single ::: array
692692
}
693693
}
694694

@@ -1028,16 +1028,16 @@ private[emitter] final class ClassEmitter(sjsGen: SJSGen) {
10281028
case e: TopLevelMethodExportDef =>
10291029
genTopLevelMethodExportDef(e)
10301030
case e: TopLevelFieldExportDef =>
1031-
genTopLevelFieldExportDef(topLevelExport.owningClass, e)
1031+
genTopLevelFieldExportDef(topLevelExport.owningClass, e).map(_ :: Nil)
10321032
}
10331033
}
10341034

1035-
WithGlobals.list(exportsWithGlobals)
1035+
WithGlobals.flatten(exportsWithGlobals)
10361036
}
10371037

10381038
private def genTopLevelMethodExportDef(tree: TopLevelMethodExportDef)(
10391039
implicit moduleContext: ModuleContext,
1040-
globalKnowledge: GlobalKnowledge): WithGlobals[js.Tree] = {
1040+
globalKnowledge: GlobalKnowledge): WithGlobals[List[js.Tree]] = {
10411041
import TreeDSL._
10421042

10431043
val JSMethodDef(flags, StringLiteral(exportName), args, restParam, body) =
@@ -1056,22 +1056,22 @@ private[emitter] final class ClassEmitter(sjsGen: SJSGen) {
10561056

10571057
private def genConstValueExportDef(exportName: String,
10581058
exportedValue: js.Tree)(
1059-
implicit pos: Position): WithGlobals[js.Tree] = {
1059+
implicit pos: Position): WithGlobals[List[js.Tree]] = {
10601060
moduleKind match {
10611061
case ModuleKind.NoModule =>
1062-
genAssignToNoModuleExportVar(exportName, exportedValue)
1062+
genAssignToNoModuleExportVar(exportName, exportedValue).map(_ :: Nil)
10631063

10641064
case ModuleKind.ESModule =>
10651065
val field = fileLevelVar(VarField.e, exportName)
10661066
val let = js.Let(field.ident, mutable = true, Some(exportedValue))
10671067
val exportStat = js.Export((field.ident -> js.ExportName(exportName)) :: Nil)
1068-
WithGlobals(js.Block(let, exportStat))
1068+
WithGlobals(List(let, exportStat))
10691069

10701070
case ModuleKind.CommonJSModule =>
10711071
globalRef("exports").map { exportsVarRef =>
10721072
js.Assign(
10731073
genBracketSelect(exportsVarRef, js.StringLiteral(exportName)),
1074-
exportedValue)
1074+
exportedValue) :: Nil
10751075
}
10761076
}
10771077
}

linker/shared/src/main/scala/org/scalajs/linker/backend/emitter/Emitter.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -595,7 +595,7 @@ final class Emitter(config: Emitter.Config) {
595595
*/
596596

597597
if (classEmitter.needInstanceTests(linkedClass)(classCache)) {
598-
main += extractWithGlobals(classTreeCache.instanceTests.getOrElseUpdate(
598+
main ++= extractWithGlobals(classTreeCache.instanceTests.getOrElseUpdate(
599599
classEmitter.genInstanceTests(className, kind)(moduleContext, classCache, linkedClass.pos)))
600600
}
601601

@@ -1035,7 +1035,7 @@ object Emitter {
10351035

10361036
private final class DesugaredClassCache {
10371037
val privateJSFields = new OneTimeCache[WithGlobals[List[js.Tree]]]
1038-
val instanceTests = new OneTimeCache[WithGlobals[js.Tree]]
1038+
val instanceTests = new OneTimeCache[WithGlobals[List[js.Tree]]]
10391039
val typeData = new OneTimeCache[WithGlobals[List[js.Tree]]]
10401040
val setTypeData = new OneTimeCache[js.Tree]
10411041
val moduleAccessor = new OneTimeCache[WithGlobals[List[js.Tree]]]

0 commit comments

Comments
 (0)
0