Skip to content

Commit b3efa41

Browse files
committed
Check that conversions to scalajs-dom refers to existing types, and verify number of type parameters.
1 parent 97e942a commit b3efa41

File tree

3 files changed

+56
-16
lines changed

3 files changed

+56
-16
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package org.scalablytyped.converter.internal.scalajs
2+
package flavours
3+
4+
object ReportMissingScalaJsDomTranslations extends App {
5+
val conversions = new ScalaJsDomNames(new QualifiedName.StdNames(Name.std)).All
6+
val conversionTarget = conversions.map(_.to).toSet
7+
val ScalaJsDom = QualifiedName("org.scalajs.dom")
8+
val missing = ScalaJsClasses.ScalaJsTypes.collect {
9+
case (qname, _)
10+
if qname.startsWith(ScalaJsDom) &&
11+
!conversionTarget(qname) &&
12+
!qname.parts.contains(Name("raw")) &&
13+
!qname.parts.contains(Name("experimental")) &&
14+
!qname.parts.contains(Name("crypto")) &&
15+
!qname.parts.contains(Name("svg")) &&
16+
!qname.parts.contains(Name("html")) &&
17+
!qname.parts.contains(Name("idb")) &&
18+
!qname.parts(qname.parts.length - 2).unescaped.head.isUpper =>
19+
qname
20+
}
21+
22+
missing.toList.sortBy(_.parts).foreach(qname => println(qname.parts.map(_.unescaped).mkString(".")))
23+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package org.scalablytyped.converter.internal.scalajs
2+
package flavours
3+
4+
class ScalaJsDomNamesTest extends org.scalatest.funsuite.AnyFunSuite {
5+
test("check that scalajs-dom names exist and matches expectations") {
6+
val conversions = new ScalaJsDomNames(new QualifiedName.StdNames(Name.std)).All
7+
conversions.foreach { conversion =>
8+
ScalaJsClasses.ScalaJsTypes(conversion.to) match {
9+
case cls: ClassTree =>
10+
if (conversion.tparams.length != cls.tparams.length)
11+
fail(s"Conversion $conversion should have had ${cls.tparams.length} tparams ")
12+
13+
case ta: TypeAliasTree =>
14+
if (conversion.tparams.length != ta.tparams.length)
15+
fail(s"Conversion $conversion should have had ${ta.tparams.length} tparams ")
16+
}
17+
}
18+
}
19+
}

scalajs/src/main/scala/org/scalablytyped/converter/internal/scalajs/flavours/ScalaJsDomNames.scala

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package org.scalablytyped.converter.internal
22
package scalajs
33
package flavours
44

5-
import org.scalablytyped.converter.internal.scalajs.CastConversion.TParam._1
5+
import org.scalablytyped.converter.internal.scalajs.CastConversion.TParam
66

77
class ScalaJsDomNames(stdNames: QualifiedName.StdNames) {
88

@@ -26,7 +26,7 @@ class ScalaJsDomNames(stdNames: QualifiedName.StdNames) {
2626
CastConversion(stdNames.lib + Name("AnalyserNode"), QualifiedName("org.scalajs.dom.AnalyserNode")),
2727
CastConversion(stdNames.lib + Name("AnimationEvent"), QualifiedName("org.scalajs.dom.AnimationEvent")),
2828
CastConversion(stdNames.lib + Name("ApplicationCache"), QualifiedName("org.scalajs.dom.ApplicationCache")),
29-
CastConversion(stdNames.lib + Name("Array"), QualifiedName("scala.scalajs.js.Array"), _1),
29+
CastConversion(stdNames.lib + Name("Array"), QualifiedName("scala.scalajs.js.Array"), TParam._1),
3030
CastConversion(stdNames.lib + Name("ArrayBuffer"), QualifiedName("scala.scalajs.js.typedarray.ArrayBuffer")),
3131
CastConversion(stdNames.lib + Name("ArrayBufferView"), QualifiedName("scala.scalajs.js.typedarray.ArrayBufferView")),
3232
CastConversion(stdNames.lib + Name("Attr"), QualifiedName("org.scalajs.dom.Attr")),
@@ -146,7 +146,7 @@ class ScalaJsDomNames(stdNames: QualifiedName.StdNames) {
146146
CastConversion(stdNames.lib + Name("HTMLBodyElement"), QualifiedName("org.scalajs.dom.HTMLBodyElement")),
147147
CastConversion(stdNames.lib + Name("HTMLButtonElement"), QualifiedName("org.scalajs.dom.HTMLButtonElement")),
148148
CastConversion(stdNames.lib + Name("HTMLCanvasElement"), QualifiedName("org.scalajs.dom.HTMLCanvasElement")),
149-
CastConversion(stdNames.lib + Name("HTMLCollection"), QualifiedName("org.scalajs.dom.HTMLCollection")),
149+
CastConversion(stdNames.lib + Name("HTMLCollection"), QualifiedName("org.scalajs.dom.HTMLCollection"), TParam._1),
150150
CastConversion(stdNames.lib + Name("HTMLDListElement"), QualifiedName("org.scalajs.dom.HTMLDListElement")),
151151
CastConversion(stdNames.lib + Name("HTMLDataListElement"), QualifiedName("org.scalajs.dom.HTMLDataListElement")),
152152
CastConversion(stdNames.lib + Name("HTMLDivElement"), QualifiedName("org.scalajs.dom.HTMLDivElement")),
@@ -204,19 +204,18 @@ class ScalaJsDomNames(stdNames: QualifiedName.StdNames) {
204204
CastConversion(stdNames.lib + Name("HmacImportParams"), QualifiedName("org.scalajs.dom.HmacImportParams")),
205205
CastConversion(stdNames.lib + Name("HmacKeyAlgorithm"), QualifiedName("org.scalajs.dom.HmacKeyAlgorithm")),
206206
CastConversion(stdNames.lib + Name("HmacKeyGenParams"), QualifiedName("org.scalajs.dom.HmacKeyGenParams")),
207-
CastConversion(stdNames.lib + Name("IDBCursor"), QualifiedName("org.scalajs.dom.IDBCursor")),
208-
CastConversion(stdNames.lib + Name("IDBCursorWithValue"), QualifiedName("org.scalajs.dom.IDBCursorWithValue")),
207+
CastConversion(stdNames.lib + Name("IDBCursor"), QualifiedName("org.scalajs.dom.IDBCursor"), TParam._1),
208+
CastConversion(stdNames.lib + Name("IDBCursorWithValue"), QualifiedName("org.scalajs.dom.IDBCursorWithValue"), TParam._1),
209209
CastConversion(stdNames.lib + Name("IDBDatabase"), QualifiedName("org.scalajs.dom.IDBDatabase")),
210210
CastConversion(stdNames.lib + Name("IDBEnvironment"), QualifiedName("org.scalajs.dom.IDBEnvironment")),
211211
CastConversion(stdNames.lib + Name("IDBFactory"), QualifiedName("org.scalajs.dom.IDBFactory")),
212212
CastConversion(stdNames.lib + Name("IDBIndex"), QualifiedName("org.scalajs.dom.IDBIndex")),
213213
CastConversion(stdNames.lib + Name("IDBKeyRange"), QualifiedName("org.scalajs.dom.IDBKeyRange")),
214214
CastConversion(stdNames.lib + Name("IDBObjectStore"), QualifiedName("org.scalajs.dom.IDBObjectStore")),
215-
CastConversion(stdNames.lib + Name("IDBOpenDBRequest"), QualifiedName("org.scalajs.dom.IDBOpenDBRequest")),
216-
CastConversion(stdNames.lib + Name("IDBRequest"), QualifiedName("org.scalajs.dom.IDBRequest")),
215+
CastConversion(stdNames.lib + Name("IDBOpenDBRequest"), QualifiedName("org.scalajs.dom.IDBOpenDBRequest"), TParam._1),
216+
CastConversion(stdNames.lib + Name("IDBRequest"), QualifiedName("org.scalajs.dom.IDBRequest"), CastConversion.TParam.Ref(TypeRef.Any), TParam._1),
217217
CastConversion(stdNames.lib + Name("IDBTransaction"), QualifiedName("org.scalajs.dom.IDBTransaction")),
218218
CastConversion(stdNames.lib + Name("IDBVersionChangeEvent"), QualifiedName("org.scalajs.dom.IDBVersionChangeEvent")),
219-
CastConversion(stdNames.lib + Name("Image"), QualifiedName("org.scalajs.dom.ext.Image")),
220219
CastConversion(stdNames.lib + Name("ImageData"), QualifiedName("org.scalajs.dom.ImageData")),
221220
CastConversion(stdNames.lib + Name("Int16Array"), QualifiedName("scala.scalajs.js.typedarray.Int16Array")),
222221
CastConversion(stdNames.lib + Name("Int32Array"), QualifiedName("scala.scalajs.js.typedarray.Int32Array")),
@@ -227,8 +226,8 @@ class ScalaJsDomNames(stdNames: QualifiedName.StdNames) {
227226
CastConversion(stdNames.lib + Name("Intl.DateTimeFormatOptions"), QualifiedName("org.scalajs.dom.intl.DateTimeFormatOptions")),
228227
CastConversion(stdNames.lib + Name("Intl.NumberFormat"), QualifiedName("org.scalajs.dom.intl.NumberFormat")),
229228
CastConversion(stdNames.lib + Name("Intl.NumberFormatOptions"), QualifiedName("org.scalajs.dom.intl.NumberFormatOptions")),
230-
CastConversion(stdNames.lib + Name("Iterable"), QualifiedName("scala.scalajs.js.Iterable"), _1),
231-
CastConversion(stdNames.lib + Name("Iterator"), QualifiedName("scala.scalajs.js.Iterator"), _1),
229+
CastConversion(stdNames.lib + Name("Iterable"), QualifiedName("scala.scalajs.js.Iterable"), TParam._1),
230+
CastConversion(stdNames.lib + Name("Iterator"), QualifiedName("scala.scalajs.js.Iterator"), TParam._1),
232231
CastConversion(stdNames.lib + Name("JsonWebKey"), QualifiedName("org.scalajs.dom.JsonWebKey")),
233232
CastConversion(stdNames.lib + Name("KeyAlgorithm"), QualifiedName("org.scalajs.dom.KeyAlgorithm")),
234233
CastConversion(stdNames.lib + Name("KeyFormat"), QualifiedName("org.scalajs.dom.KeyFormat")),
@@ -273,8 +272,8 @@ class ScalaJsDomNames(stdNames: QualifiedName.StdNames) {
273272
CastConversion(stdNames.lib + Name("Node"), QualifiedName("org.scalajs.dom.Node")),
274273
CastConversion(stdNames.lib + Name("NodeFilter"), QualifiedName("org.scalajs.dom.NodeFilter")),
275274
CastConversion(stdNames.lib + Name("NodeIterator"), QualifiedName("org.scalajs.dom.NodeIterator")),
276-
CastConversion(stdNames.lib + Name("NodeList"), QualifiedName("org.scalajs.dom.NodeList")),
277-
CastConversion(stdNames.lib + Name("NodeListOf"), QualifiedName("org.scalajs.dom.NodeListOf"), _1.among(Set.empty, QualifiedName("org.scalajs.dom.Node"))),
275+
CastConversion(stdNames.lib + Name("NodeList"), QualifiedName("org.scalajs.dom.NodeList"), TParam.Ref(TypeRef(QualifiedName("org.scalajs.dom.Node")))),
276+
CastConversion(stdNames.lib + Name("NodeListOf"), QualifiedName("org.scalajs.dom.NodeList"), TParam._1.among(Set.empty, QualifiedName("org.scalajs.dom.Node"))),
278277
CastConversion(stdNames.lib + Name("NonDocumentTypeChildNode"), QualifiedName("org.scalajs.dom.NonDocumentTypeChildNode")),
279278
CastConversion(stdNames.lib + Name("Notification"), QualifiedName("org.scalajs.dom.Notification")),
280279
CastConversion(stdNames.lib + Name("NotificationOptions"), QualifiedName("org.scalajs.dom.NotificationOptions")),
@@ -301,7 +300,7 @@ class ScalaJsDomNames(stdNames: QualifiedName.StdNames) {
301300
CastConversion(stdNames.lib + Name("PositionOptions"), QualifiedName("org.scalajs.dom.PositionOptions")),
302301
CastConversion(stdNames.lib + Name("ProcessingInstruction"), QualifiedName("org.scalajs.dom.ProcessingInstruction")),
303302
CastConversion(stdNames.lib + Name("ProgressEvent"), QualifiedName("org.scalajs.dom.ProgressEvent")),
304-
CastConversion(stdNames.lib + Name("Promise"), QualifiedName("scala.scalajs.js.Promise"), _1),
303+
CastConversion(stdNames.lib + Name("Promise"), QualifiedName("scala.scalajs.js.Promise"), TParam._1),
305304
CastConversion(stdNames.lib + Name("PropertyDescriptor"), QualifiedName("scala.scalajs.js.PropertyDescriptor")),
306305
CastConversion(stdNames.lib + Name("PushEncryptionKeyName"), QualifiedName("org.scalajs.dom.PushEncryptionKeyName")),
307306
CastConversion(stdNames.lib + Name("PushManager"), QualifiedName("org.scalajs.dom.PushManager")),
@@ -337,11 +336,10 @@ class ScalaJsDomNames(stdNames: QualifiedName.StdNames) {
337336
CastConversion(stdNames.lib + Name("RTCStatsType"), QualifiedName("org.scalajs.dom.RTCStatsType")),
338337
CastConversion(stdNames.lib + Name("Range"), QualifiedName("org.scalajs.dom.Range")),
339338
CastConversion(stdNames.lib + Name("RangeError"), QualifiedName("scala.scalajs.js.RangeError")),
340-
CastConversion(stdNames.lib + Name("ReadableStream"), QualifiedName("org.scalajs.dom.ReadableStream"), _1),
341-
CastConversion(stdNames.lib + Name("ReadableStreamReader"), QualifiedName("org.scalajs.dom.ReadableStreamReader"), _1),
339+
CastConversion(stdNames.lib + Name("ReadableStream"), QualifiedName("org.scalajs.dom.ReadableStream"), TParam._1),
340+
CastConversion(stdNames.lib + Name("ReadableStreamReader"), QualifiedName("org.scalajs.dom.ReadableStreamReader"), TParam._1),
342341
CastConversion(stdNames.lib + Name("ReferenceError"), QualifiedName("scala.scalajs.js.ReferenceError")),
343342
CastConversion(stdNames.lib + Name("ReferrerPolicy"), QualifiedName("org.scalajs.dom.ReferrerPolicy")),
344-
CastConversion(stdNames.lib + Name("Reflect"), QualifiedName("scala.scalajs.reflect.Reflect")),
345343
CastConversion(stdNames.lib + Name("RegExp"), QualifiedName("scala.scalajs.js.RegExp")),
346344
CastConversion(stdNames.lib + Name("Request"), QualifiedName("org.scalajs.dom.Request")),
347345
CastConversion(stdNames.lib + Name("RequestCache"), QualifiedName("org.scalajs.dom.RequestCache")),

0 commit comments

Comments
 (0)