Generates Scala.js IR files for the compilation unit.
Main codegen for Scala.js IR.
[[GenSJSIR]] creates one instance of
JSCodeGen per compilation unit.
run() method processes the whole compilation unit and generates
.sjsir files for it.
There are 4 main levels of translation:
genCompilationUnit()iterates through all the type definitions in the compilation unit. Each generated
js.ClassDefis serialized to an
genScalaClass()and other similar methods generate the skeleton of classes.
genMethod()and similar methods generate the declarations of methods.
genStatOrExpr()and everything else generate the bodies of methods.
Some issues that this encoding solves: * Overloading: encode the full signature in the JS name * Same scope for fields and methods of a class * Global access to classes and modules (by their full name)
Conversion utilities from dotty Positions to IR Positions.