Skip to content

Commit f37bf0d

Browse files
authored
Merge pull request #493 from scala-js/topic/minimaDepVer
Format deprecated methods more clearly in API reports
2 parents 78143d3 + 0c54909 commit f37bf0d

File tree

4 files changed

+41
-14
lines changed

4 files changed

+41
-14
lines changed

api-reports/2_12.txt

+5-5
Original file line numberDiff line numberDiff line change
@@ -863,7 +863,7 @@ experimental/permissions/package[SO] val permissions: Permissions
863863
experimental/permissions/package[SO] val `persistent-storage` = "persistent-storage".asInstanceOf[PermissionName]
864864
experimental/permissions/package[SO] val prompt = "prompt".asInstanceOf[PermissionState]
865865
experimental/permissions/package[SO] val push = "push".asInstanceOf[PermissionName]
866-
experimental/permissions/package[SO] def query( permissionDescriptor: PermissionDescriptor): js.Promise[PermissionStatus]
866+
experimental/permissions/package[SO] def query(permissionDescriptor: PermissionDescriptor): js.Promise[PermissionStatus]
867867
experimental/permissions/package[SO] val state: PermissionState
868868
experimental/permissions/package[SO] implicit def toPermissions(navigator: dom.raw.Navigator): PermissionsNavigator
869869
experimental/permissions/package[SO] val userVisibleOnly = permissionUserVisibleOnly
@@ -888,7 +888,7 @@ experimental/permissions/package.PermissionStatus[JT] var onchange: js.Function1
888888
experimental/permissions/package.PermissionStatus[JT] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], options: EventListenerOptions): Unit
889889
experimental/permissions/package.PermissionStatus[JT] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit
890890
experimental/permissions/package.PermissionStatus[JT] val state: PermissionState
891-
experimental/permissions/package.Permissions[JT] def query( permissionDescriptor: PermissionDescriptor): js.Promise[PermissionStatus]
891+
experimental/permissions/package.Permissions[JT] def query(permissionDescriptor: PermissionDescriptor): js.Promise[PermissionStatus]
892892
experimental/permissions/package.PermissionsNavigator[JT] val permissions: Permissions
893893
experimental/permissions/package.PushPermissionDescriptor[JT] val name: PermissionName
894894
experimental/permissions/package.PushPermissionDescriptor[JT] val userVisibleOnly: Boolean
@@ -933,7 +933,7 @@ experimental/push/package.PushServiceWorkerRegistration[JT] val pushManager: Pus
933933
experimental/serviceworkers/Cache[JC] def add(request: RequestInfo): js.Promise[Unit]
934934
experimental/serviceworkers/Cache[JC] def addAll(requests: js.Array[RequestInfo]): js.Promise[Unit]
935935
experimental/serviceworkers/Cache[JC] def delete(request: RequestInfo, options: js.UndefOr[CacheQueryOptions]?): js.Promise[Boolean]
936-
experimental/serviceworkers/Cache[JC] def keys(request: js.UndefOr[RequestInfo]?, options: js.UndefOr[ CacheQueryOptions]?): js.Promise[js.Array[Request]]
936+
experimental/serviceworkers/Cache[JC] def keys(request: js.UndefOr[RequestInfo]?, options: js.UndefOr[CacheQueryOptions]?): js.Promise[js.Array[Request]]
937937
experimental/serviceworkers/Cache[JC] def `match`(request: RequestInfo, options: js.UndefOr[CacheQueryOptions]?): js.Promise[js.UndefOr[Response]]
938938
experimental/serviceworkers/Cache[JC] def matchAll(request: RequestInfo?, options: js.UndefOr[CacheQueryOptions]?): js.Promise[js.Array[Response]]
939939
experimental/serviceworkers/Cache[JC] def put(request: RequestInfo, response: Response): js.Promise[Unit]
@@ -2535,7 +2535,7 @@ raw/BiquadFilterNode[JT] def removeEventListener[T <: Event](`type`: String, lis
25352535
raw/BiquadFilterNode[JT] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit
25362536
raw/BiquadFilterNode[JT] var `type`: String
25372537
raw/Blob[JC] def arrayBuffer(): js.Promise[ArrayBuffer]
2538-
raw/Blob[JC] @deprecated("This method seems to have been added in error and not actually exist.", "1.2.0") def close(): Unit
2538+
raw/Blob[JC] def close(): Unit (@deprecated in 1.2.0)
25392539
raw/Blob[JC] def size: Double
25402540
raw/Blob[JC] def slice(start: Double?, end: Double?, contentType: String?): Blob
25412541
raw/Blob[JC] def stream(): ReadableStream[Byte]
@@ -3774,7 +3774,7 @@ raw/EventTarget[JC] def removeEventListener[T <: Event](`type`: String, listener
37743774
raw/EventTarget[JC] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit
37753775
raw/External[JT]
37763776
raw/File[JC] def arrayBuffer(): js.Promise[ArrayBuffer]
3777-
raw/File[JC] @deprecated("This method seems to have been added in error and not actually exist.", "1.2.0") def close(): Unit
3777+
raw/File[JC] def close(): Unit (@deprecated in 1.2.0)
37783778
raw/File[JC] def name: String
37793779
raw/File[JC] def size: Double
37803780
raw/File[JC] def slice(start: Double?, end: Double?, contentType: String?): Blob

api-reports/2_13.txt

+5-5
Original file line numberDiff line numberDiff line change
@@ -863,7 +863,7 @@ experimental/permissions/package[SO] val permissions: Permissions
863863
experimental/permissions/package[SO] val `persistent-storage` = "persistent-storage".asInstanceOf[PermissionName]
864864
experimental/permissions/package[SO] val prompt = "prompt".asInstanceOf[PermissionState]
865865
experimental/permissions/package[SO] val push = "push".asInstanceOf[PermissionName]
866-
experimental/permissions/package[SO] def query( permissionDescriptor: PermissionDescriptor): js.Promise[PermissionStatus]
866+
experimental/permissions/package[SO] def query(permissionDescriptor: PermissionDescriptor): js.Promise[PermissionStatus]
867867
experimental/permissions/package[SO] val state: PermissionState
868868
experimental/permissions/package[SO] implicit def toPermissions(navigator: dom.raw.Navigator): PermissionsNavigator
869869
experimental/permissions/package[SO] val userVisibleOnly = permissionUserVisibleOnly
@@ -888,7 +888,7 @@ experimental/permissions/package.PermissionStatus[JT] var onchange: js.Function1
888888
experimental/permissions/package.PermissionStatus[JT] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], options: EventListenerOptions): Unit
889889
experimental/permissions/package.PermissionStatus[JT] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit
890890
experimental/permissions/package.PermissionStatus[JT] val state: PermissionState
891-
experimental/permissions/package.Permissions[JT] def query( permissionDescriptor: PermissionDescriptor): js.Promise[PermissionStatus]
891+
experimental/permissions/package.Permissions[JT] def query(permissionDescriptor: PermissionDescriptor): js.Promise[PermissionStatus]
892892
experimental/permissions/package.PermissionsNavigator[JT] val permissions: Permissions
893893
experimental/permissions/package.PushPermissionDescriptor[JT] val name: PermissionName
894894
experimental/permissions/package.PushPermissionDescriptor[JT] val userVisibleOnly: Boolean
@@ -933,7 +933,7 @@ experimental/push/package.PushServiceWorkerRegistration[JT] val pushManager: Pus
933933
experimental/serviceworkers/Cache[JC] def add(request: RequestInfo): js.Promise[Unit]
934934
experimental/serviceworkers/Cache[JC] def addAll(requests: js.Array[RequestInfo]): js.Promise[Unit]
935935
experimental/serviceworkers/Cache[JC] def delete(request: RequestInfo, options: js.UndefOr[CacheQueryOptions]?): js.Promise[Boolean]
936-
experimental/serviceworkers/Cache[JC] def keys(request: js.UndefOr[RequestInfo]?, options: js.UndefOr[ CacheQueryOptions]?): js.Promise[js.Array[Request]]
936+
experimental/serviceworkers/Cache[JC] def keys(request: js.UndefOr[RequestInfo]?, options: js.UndefOr[CacheQueryOptions]?): js.Promise[js.Array[Request]]
937937
experimental/serviceworkers/Cache[JC] def `match`(request: RequestInfo, options: js.UndefOr[CacheQueryOptions]?): js.Promise[js.UndefOr[Response]]
938938
experimental/serviceworkers/Cache[JC] def matchAll(request: RequestInfo?, options: js.UndefOr[CacheQueryOptions]?): js.Promise[js.Array[Response]]
939939
experimental/serviceworkers/Cache[JC] def put(request: RequestInfo, response: Response): js.Promise[Unit]
@@ -2535,7 +2535,7 @@ raw/BiquadFilterNode[JT] def removeEventListener[T <: Event](`type`: String, lis
25352535
raw/BiquadFilterNode[JT] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit
25362536
raw/BiquadFilterNode[JT] var `type`: String
25372537
raw/Blob[JC] def arrayBuffer(): js.Promise[ArrayBuffer]
2538-
raw/Blob[JC] @deprecated("This method seems to have been added in error and not actually exist.", "1.2.0") def close(): Unit
2538+
raw/Blob[JC] def close(): Unit (@deprecated in 1.2.0)
25392539
raw/Blob[JC] def size: Double
25402540
raw/Blob[JC] def slice(start: Double?, end: Double?, contentType: String?): Blob
25412541
raw/Blob[JC] def stream(): ReadableStream[Byte]
@@ -3774,7 +3774,7 @@ raw/EventTarget[JC] def removeEventListener[T <: Event](`type`: String, listener
37743774
raw/EventTarget[JC] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit
37753775
raw/External[JT]
37763776
raw/File[JC] def arrayBuffer(): js.Promise[ArrayBuffer]
3777-
raw/File[JC] @deprecated("This method seems to have been added in error and not actually exist.", "1.2.0") def close(): Unit
3777+
raw/File[JC] def close(): Unit (@deprecated in 1.2.0)
37783778
raw/File[JC] def name: String
37793779
raw/File[JC] def size: Double
37803780
raw/File[JC] def slice(start: Double?, end: Double?, contentType: String?): Blob

scalafix/src/main/scala/org/scalajs/dom/scalafix/GenerateApiReport.scala

+26-2
Original file line numberDiff line numberDiff line change
@@ -48,14 +48,38 @@ class GenerateApiReport extends SemanticRule("GenerateApiReport") {
4848
return
4949

5050
// Remove definition bodies
51-
val t2: Tree =
51+
var t2: Tree =
5252
t match {
5353
case Defn.Def(mods, name, tparams, paramss, Some(tpe), _) => Decl.Def(mods, name, tparams, paramss, tpe)
5454
case Defn.Val(mods, pats, Some(tpe), _) => Decl.Val(mods, pats, tpe)
5555
case Defn.Var(mods, pats, Some(tpe), _) => Decl.Var(mods, pats, tpe)
5656
case _ => t
5757
}
5858

59+
// Inspect annotations
60+
var deprecatedVer = Option.empty[String]
61+
62+
def inspectAnnotations(mods: List[Mod]): List[Mod] =
63+
mods.filter {
64+
case Mod.Annot(Init(tpe, _, List(List(_, ver)))) if tpe.toString == "deprecated" =>
65+
deprecatedVer = Some {
66+
ver match {
67+
case Lit.String(s) => s
68+
case term => term.toString
69+
}
70+
}
71+
false
72+
case _ => true
73+
}
74+
75+
t2 match {
76+
case Decl.Def(mods, name, tparams, paramss, tpe) => t2 = Decl.Def(inspectAnnotations(mods), name, tparams, paramss, tpe)
77+
case Decl.Val(mods, pats, tpe) => t2 = Decl.Val(inspectAnnotations(mods), pats, tpe)
78+
case Decl.Var(mods, pats, tpe) => t2 = Decl.Var(inspectAnnotations(mods), pats, tpe)
79+
case _ =>
80+
}
81+
82+
// Generate member desc
5983
val desc =
6084
t2
6185
.toString
@@ -71,7 +95,7 @@ class GenerateApiReport extends SemanticRule("GenerateApiReport") {
7195
// "?" means that type aliases come before everything else
7296
val name = Util.termName(t2).fold("?")(_.value)
7397

74-
s.add(MutableState.Member(name, desc))
98+
s.add(MutableState.Member(name, desc, deprecatedVer))
7599
}
76100

77101
body.traverse {

scalafix/src/main/scala/org/scalajs/dom/scalafix/MutableState.scala

+5-2
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,10 @@ final class MutableState {
6969
} {
7070
membersFound = true
7171
val key = (scopeKey, v.name, v.desc)
72-
b += Result(key, prefix + v.desc)
72+
var result = prefix + v.desc
73+
for (ver <- v.deprecatedVer)
74+
result = s"$result (@deprecated in $ver)"
75+
b += Result(key, result)
7376
}
7477

7578
if (!membersFound && !scopeName.endsWith("/package")) {
@@ -103,7 +106,7 @@ object MutableState {
103106
synchronized(directMembers += v)
104107
}
105108

106-
final case class Member(name: String, desc: String)
109+
final case class Member(name: String, desc: String, deprecatedVer: Option[String])
107110

108111
private[MutableState] final case class Result(sortKey: Result.SortKey, value: String)
109112

0 commit comments

Comments
 (0)