@@ -45,6 +45,8 @@ import sbt.{Logger, MessageOnlyException}
45
45
final class JavalibIRCleaner (baseDirectoryURI : URI ) {
46
46
import JavalibIRCleaner ._
47
47
48
+ type JSTypes = Map [ClassName , Option [JSNativeLoadSpec ]]
49
+
48
50
def cleanIR (dependencyFiles : Seq [File ], libFileMappings : Seq [(File , File )],
49
51
logger : Logger ): Set [File ] = {
50
52
@@ -155,19 +157,19 @@ final class JavalibIRCleaner(baseDirectoryURI: URI) {
155
157
}
156
158
}
157
159
158
- private def getJSTypes (trees : Stream [ClassDef ]): Map [ ClassName , ClassDef ] = {
159
- trees.filter(_.kind.isJSType).reduce[Map [ ClassName , ClassDef ] ](
160
- Map .empty, (m, v) => m.updated(v.className, v), _ ++ _)
160
+ private def getJSTypes (trees : Stream [ClassDef ]): JSTypes = {
161
+ trees.filter(_.kind.isJSType).reduce[JSTypes ](
162
+ Map .empty, (m, v) => m.updated(v.className, v.jsNativeLoadSpec ), _ ++ _)
161
163
}
162
164
163
- private def cleanTree (tree : ClassDef , jsTypes : Map [ ClassName , ClassDef ] ,
165
+ private def cleanTree (tree : ClassDef , jsTypes : JSTypes ,
164
166
errorManager : ErrorManager ): ClassDef = {
165
167
new ClassDefCleaner (tree.className, jsTypes, errorManager)
166
168
.cleanClassDef(tree)
167
169
}
168
170
169
171
private final class ClassDefCleaner (enclosingClassName : ClassName ,
170
- jsTypes : Map [ ClassName , ClassDef ] , errorManager : ErrorManager )
172
+ jsTypes : JSTypes , errorManager : ErrorManager )
171
173
extends Transformers .ClassTransformer {
172
174
173
175
def cleanClassDef (tree : ClassDef ): ClassDef = {
@@ -496,16 +498,13 @@ final class JavalibIRCleaner(baseDirectoryURI: URI) {
496
498
private def genLoadFromLoadSpecOf (className : ClassName )(
497
499
implicit pos : Position ): Tree = {
498
500
jsTypes.get(className) match {
499
- case Some (classDef) =>
500
- classDef.jsNativeLoadSpec match {
501
- case Some (loadSpec) =>
502
- genLoadFromLoadSpec(loadSpec)
503
- case None =>
504
- reportError(
505
- s " ${className.nameString} does not have a load spec " +
506
- " (this shouldn't have happened at all; bug in the compiler?)" )
507
- JSGlobalRef (" Object" )
508
- }
501
+ case Some (Some (loadSpec)) =>
502
+ genLoadFromLoadSpec(loadSpec)
503
+ case Some (None ) =>
504
+ reportError(
505
+ s " ${className.nameString} does not have a load spec " +
506
+ " (this shouldn't have happened at all; bug in the compiler?)" )
507
+ JSGlobalRef (" Object" )
509
508
case None =>
510
509
reportError(s " ${className.nameString} is not a JS type " )
511
510
JSGlobalRef (" Object" )
0 commit comments