Skip to content

Commit e58f7ef

Browse files
committed
Emit a compile error for non-native JS classes instead of crashing.
This allows to immediately know what file is problematic.
1 parent bc4b401 commit e58f7ef

File tree

1 file changed

+25
-1
lines changed

1 file changed

+25
-1
lines changed

compiler/src/dotty/tools/backend/sjs/JSCodeGen.scala

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,31 @@ class JSCodeGen()(using genCtx: Context) {
384384

385385
/** Gen the IR ClassDef for a Scala.js-defined JS class. */
386386
private def genScalaJSDefinedJSClass(td: TypeDef): js.ClassDef = {
387-
???
387+
val sym = td.symbol.asClass
388+
implicit val pos: SourcePosition = sym.sourcePos
389+
390+
assert(!sym.is(Trait),
391+
"genScalaJSDefinedJSClass() must be called only for normal classes: "+sym)
392+
assert(sym.superClass != NoSymbol, sym)
393+
394+
val classIdent = encodeClassNameIdent(sym)
395+
val originalName = originalNameOfClass(sym)
396+
397+
report.error("cannot emit non-native JS classes yet", td.sourcePos)
398+
399+
// Dummy result
400+
js.ClassDef(
401+
classIdent,
402+
originalName,
403+
ClassKind.JSClass,
404+
None,
405+
Some(encodeClassNameIdent(sym.superClass)),
406+
genClassInterfaces(sym),
407+
None,
408+
None,
409+
Nil,
410+
Nil)(
411+
OptimizerHints.empty)
388412
}
389413

390414
/** Gen the IR ClassDef for a raw JS class or trait.

0 commit comments

Comments
 (0)