Skip to content

Commit a2420dd

Browse files
committed
support multiple constructors
1 parent 8ad6df5 commit a2420dd

File tree

2 files changed

+27
-14
lines changed

2 files changed

+27
-14
lines changed

TS.fsx

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1078,19 +1078,25 @@ module Emit =
10781078
let emitConstructorSigFromJson (c: InputJsonType.Root) =
10791079
c.Signatures |> Array.iter (Pt.Printl "%s;")
10801080

1081+
let emitConstructorSingleSignature (ctor: Browser.Constructor) =
1082+
for { ParamCombinations = pCombList } in GetOverloads (Ctor ctor) false do
1083+
let paramsString = ParamsToString pCombList
1084+
Pt.Printl "new(%s): %s;" paramsString i.Name
1085+
10811086
let removedCtor = getRemovedItems ItemKind.Constructor Flavor.All |> Array.tryFind (matchInterface i.Name)
10821087
if Option.isNone removedCtor then
10831088
let overriddenCtor = getOverriddenItems ItemKind.Constructor Flavor.All |> Array.tryFind (matchInterface i.Name)
10841089
match overriddenCtor with
10851090
| Some c' -> emitConstructorSigFromJson c'
10861091
| _ ->
10871092
//Emit constructor signature
1088-
match i.Constructor with
1089-
| Some ctor ->
1090-
for { ParamCombinations = pCombList } in GetOverloads (Ctor ctor) false do
1091-
let paramsString = ParamsToString pCombList
1092-
Pt.Printl "new(%s): %s;" paramsString i.Name
1093-
| _ -> Pt.Printl "new(): %s;" i.Name
1093+
match i.Constructors with
1094+
| Some ctors ->
1095+
i.Constructors.Value.Constructors |> Array.iter emitConstructorSingleSignature
1096+
| _ ->
1097+
match i.Constructor with
1098+
| Some ctor -> emitConstructorSingleSignature ctor
1099+
| _ -> Pt.Printl "new(): %s;" i.Name
10941100

10951101
getAddedItems ItemKind.Constructor Flavor.All
10961102
|> Array.filter (matchInterface i.Name)

sample.xml

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6275,14 +6275,21 @@
62756275
</methods>
62766276
</interface>
62776277
<interface name="ImageData" extends="Object">
6278-
<constructor>
6279-
<param name="width" type="unsigned long" />
6280-
<param name="height" type="unsigned long" />
6281-
</constructor>
6282-
<properties>
6283-
<property name="data" read-only="1" type="Uint8ClampedArray" />
6284-
<property name="height" read-only="1" type="unsigned long" />
6285-
<property name="width" read-only="1" type="unsigned long" />
6278+
<constructors>
6279+
<constructor>
6280+
<param name="sw" type="unsigned long"/>
6281+
<param name="sh" type="unsigned long"/>
6282+
</constructor>
6283+
<constructor>
6284+
<param name="data" type="Uint8ClampedArray"/>
6285+
<param name="sw" type="unsigned long"/>
6286+
<param name="sh" optional="1" type="unsigned long"/>
6287+
</constructor>
6288+
</constructors>
6289+
<properties>
6290+
<property name="width" read-only="1" type="unsigned long"/>
6291+
<property name="height" read-only="1" type="unsigned long"/>
6292+
<property name="data" read-only="1" type="Uint8ClampedArray"/>
62866293
</properties>
62876294
</interface>
62886295
<interface name="IntersectionObserver" exposed="Window" extends="Object">

0 commit comments

Comments
 (0)