mirror of
https://github.com/FlipsideCrypto/DefinitelyTyped.git
synced 2026-02-06 10:56:53 +00:00
🤖 Merge PR #47643 fix(webidl2): Fix IDLInterfaceMixinMemberType by @ExE-Boss
This commit is contained in:
parent
36caac5d51
commit
95a341b0b2
6
types/webidl2/index.d.ts
vendored
6
types/webidl2/index.d.ts
vendored
@ -29,11 +29,7 @@ export type IDLInterfaceMemberType =
|
||||
| DeclarationMemberType
|
||||
| OperationMemberType;
|
||||
|
||||
export type IDLInterfaceMixinMemberType =
|
||||
| AttributeMemberType
|
||||
| ConstantMemberType
|
||||
| (DeclarationMemberType & { type: "stringifier" })
|
||||
| OperationMemberType;
|
||||
export type IDLInterfaceMixinMemberType = AttributeMemberType | ConstantMemberType | OperationMemberType;
|
||||
|
||||
export type IDLNamespaceMemberType = AttributeMemberType | OperationMemberType;
|
||||
|
||||
|
||||
@ -13,30 +13,35 @@ for (const rootType of parsed) {
|
||||
switch (rootType.type) {
|
||||
case "interface mixin":
|
||||
rootType; // $ExpectType InterfaceMixinType
|
||||
logMembers(rootType.members);
|
||||
console.log(rootType.partial);
|
||||
logInterfaceMixinMembers(rootType.members);
|
||||
break;
|
||||
|
||||
case "interface":
|
||||
rootType; // $ExpectType InterfaceType
|
||||
console.log(rootType.inheritance);
|
||||
logMembers(rootType.members);
|
||||
console.log(rootType.partial);
|
||||
logInterfaceMembers(rootType.members);
|
||||
break;
|
||||
|
||||
case "namespace":
|
||||
rootType; // $ExpectType NamespaceType
|
||||
console.log(rootType.partial);
|
||||
logNamespaceMembers(rootType.members);
|
||||
break;
|
||||
|
||||
case "callback interface":
|
||||
rootType; // $ExpectType CallbackInterfaceType
|
||||
console.log(rootType.inheritance);
|
||||
logMembers(rootType.members);
|
||||
console.log(rootType.partial);
|
||||
logCallbackInterfaceMembers(rootType.members);
|
||||
break;
|
||||
|
||||
case "callback":
|
||||
rootType; // $ExpectType CallbackType
|
||||
logArguments(rootType.arguments);
|
||||
break;
|
||||
|
||||
case "dictionary":
|
||||
rootType; // $ExpectType DictionaryType
|
||||
console.log(rootType.inheritance);
|
||||
@ -49,6 +54,7 @@ for (const rootType of parsed) {
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case "enum":
|
||||
rootType; // $ExpectType EnumType
|
||||
for (const v of rootType.values) {
|
||||
@ -56,15 +62,18 @@ for (const rootType of parsed) {
|
||||
console.log(v.value);
|
||||
}
|
||||
break;
|
||||
|
||||
case "typedef":
|
||||
rootType; // $ExpectType TypedefType
|
||||
logIdlType(rootType.idlType);
|
||||
break;
|
||||
|
||||
case "includes":
|
||||
rootType; // $ExpectType IncludesType
|
||||
console.log(rootType.target);
|
||||
console.log(rootType.includes);
|
||||
break;
|
||||
|
||||
default:
|
||||
rootType; // $ExpectType never
|
||||
break;
|
||||
@ -74,73 +83,145 @@ for (const rootType of parsed) {
|
||||
logExtAttrs(rootType.extAttrs);
|
||||
}
|
||||
|
||||
function logMembers(members: webidl2.IDLInterfaceMemberType[]) {
|
||||
function logInterfaceMembers(members: webidl2.IDLInterfaceMemberType[]) {
|
||||
for (const member of members) {
|
||||
switch (member.type) {
|
||||
case "constructor":
|
||||
member; // $ExpectType ConstructorMemberType
|
||||
member.parent; // $ExpectType InterfaceType
|
||||
logArguments(member.arguments);
|
||||
break;
|
||||
case "operation":
|
||||
member; // $ExpectType OperationMemberType
|
||||
member.parent; // $ExpectType CallbackInterfaceType | InterfaceMixinType | InterfaceType | NamespaceType
|
||||
logNamespaceMember(member);
|
||||
break;
|
||||
case "attribute":
|
||||
member; // $ExpectType AttributeMemberType
|
||||
member.parent; // $ExpectType InterfaceMixinType | InterfaceType | NamespaceType
|
||||
logNamespaceMember(member);
|
||||
break;
|
||||
case "const":
|
||||
member; // $ExpectType ConstantMemberType
|
||||
member.parent; // $ExpectType CallbackInterfaceType | InterfaceMixinType | InterfaceType
|
||||
console.log(member.name);
|
||||
logIdlType(member.idlType);
|
||||
logValueDescription(member.value);
|
||||
console.log(member.nullable);
|
||||
break;
|
||||
case "iterable":
|
||||
member; // $ExpectType IterableDeclarationMemberType
|
||||
member.parent; // $ExpectType InterfaceMixinType | InterfaceType
|
||||
member.async; // $ExpectType boolean
|
||||
member.readonly; // $ExpectType false
|
||||
member.idlType; // $ExpectType [IDLTypeDescription] | [IDLTypeDescription, IDLTypeDescription]
|
||||
member.idlType.forEach(logIdlType);
|
||||
member.arguments; // $ExpectType Argument[]
|
||||
logArguments(member.arguments);
|
||||
break;
|
||||
case "maplike":
|
||||
member; // $ExpectType MaplikeDeclarationMemberType
|
||||
member.parent; // $ExpectType InterfaceMixinType | InterfaceType
|
||||
member.async; // $ExpectType false
|
||||
member.readonly; // $ExpectType boolean
|
||||
member.idlType; // $ExpectType [IDLTypeDescription, IDLTypeDescription]
|
||||
member.idlType.forEach(logIdlType);
|
||||
member.arguments; // $ExpectType []
|
||||
logArguments(member.arguments);
|
||||
break;
|
||||
case "setlike":
|
||||
member; // $ExpectType SetlikeDeclarationMemberType
|
||||
member.parent; // $ExpectType InterfaceMixinType | InterfaceType
|
||||
member.async; // $ExpectType false
|
||||
member.readonly; // $ExpectType boolean
|
||||
member.idlType; // $ExpectType [IDLTypeDescription]
|
||||
member.idlType.forEach(logIdlType);
|
||||
member.arguments; // $ExpectType []
|
||||
logArguments(member.arguments);
|
||||
break;
|
||||
default:
|
||||
member; // $ExpectType never
|
||||
break;
|
||||
}
|
||||
logInterfaceMember(member);
|
||||
logExtAttrs(member.extAttrs);
|
||||
}
|
||||
}
|
||||
|
||||
function logInterfaceMember(member: webidl2.IDLInterfaceMemberType) {
|
||||
switch (member.type) {
|
||||
case "constructor":
|
||||
member; // $ExpectType ConstructorMemberType
|
||||
member.parent; // $ExpectType InterfaceType
|
||||
logArguments(member.arguments);
|
||||
break;
|
||||
|
||||
case "operation":
|
||||
member; // $ExpectType OperationMemberType
|
||||
member.parent; // $ExpectType CallbackInterfaceType | InterfaceMixinType | InterfaceType | NamespaceType
|
||||
logInterfaceMixinMember(member);
|
||||
break;
|
||||
|
||||
case "attribute":
|
||||
member; // $ExpectType AttributeMemberType
|
||||
member.parent; // $ExpectType InterfaceMixinType | InterfaceType | NamespaceType
|
||||
logInterfaceMixinMember(member);
|
||||
break;
|
||||
|
||||
case "const":
|
||||
member; // $ExpectType ConstantMemberType
|
||||
member.parent; // $ExpectType CallbackInterfaceType | InterfaceMixinType | InterfaceType
|
||||
logInterfaceMixinMember(member);
|
||||
break;
|
||||
|
||||
case "iterable":
|
||||
member; // $ExpectType IterableDeclarationMemberType
|
||||
member.parent; // $ExpectType InterfaceMixinType | InterfaceType
|
||||
member.async; // $ExpectType boolean
|
||||
member.readonly; // $ExpectType false
|
||||
member.idlType; // $ExpectType [IDLTypeDescription] | [IDLTypeDescription, IDLTypeDescription]
|
||||
member.idlType.forEach(logIdlType);
|
||||
member.arguments; // $ExpectType Argument[]
|
||||
logArguments(member.arguments);
|
||||
break;
|
||||
|
||||
case "maplike":
|
||||
member; // $ExpectType MaplikeDeclarationMemberType
|
||||
member.parent; // $ExpectType InterfaceMixinType | InterfaceType
|
||||
member.async; // $ExpectType false
|
||||
member.readonly; // $ExpectType boolean
|
||||
member.idlType; // $ExpectType [IDLTypeDescription, IDLTypeDescription]
|
||||
member.idlType.forEach(logIdlType);
|
||||
member.arguments; // $ExpectType []
|
||||
logArguments(member.arguments);
|
||||
break;
|
||||
|
||||
case "setlike":
|
||||
member; // $ExpectType SetlikeDeclarationMemberType
|
||||
member.parent; // $ExpectType InterfaceMixinType | InterfaceType
|
||||
member.async; // $ExpectType false
|
||||
member.readonly; // $ExpectType boolean
|
||||
member.idlType; // $ExpectType [IDLTypeDescription]
|
||||
member.idlType.forEach(logIdlType);
|
||||
member.arguments; // $ExpectType []
|
||||
logArguments(member.arguments);
|
||||
break;
|
||||
|
||||
default:
|
||||
member; // $ExpectType never
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
function logInterfaceMixinMembers(members: webidl2.IDLInterfaceMixinMemberType[]) {
|
||||
for (const member of members) {
|
||||
logInterfaceMixinMember(member);
|
||||
logExtAttrs(member.extAttrs);
|
||||
}
|
||||
}
|
||||
|
||||
function logInterfaceMixinMember(member: webidl2.IDLInterfaceMixinMemberType) {
|
||||
switch (member.type) {
|
||||
case "operation":
|
||||
member; // $ExpectType OperationMemberType
|
||||
member.parent; // $ExpectType CallbackInterfaceType | InterfaceMixinType | InterfaceType | NamespaceType
|
||||
logCallbackInterfaceMember(member);
|
||||
break;
|
||||
|
||||
case "attribute":
|
||||
member; // $ExpectType AttributeMemberType
|
||||
member.parent; // $ExpectType InterfaceMixinType | InterfaceType | NamespaceType
|
||||
logNamespaceMember(member);
|
||||
break;
|
||||
|
||||
case "const":
|
||||
member; // $ExpectType ConstantMemberType
|
||||
member.parent; // $ExpectType CallbackInterfaceType | InterfaceMixinType | InterfaceType
|
||||
logCallbackInterfaceMember(member);
|
||||
break;
|
||||
|
||||
default:
|
||||
member; // $ExpectType never
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
function logCallbackInterfaceMembers(members: webidl2.IDLCallbackInterfaceMemberType[]) {
|
||||
for (const member of members) {
|
||||
logCallbackInterfaceMember(member);
|
||||
logExtAttrs(member.extAttrs);
|
||||
}
|
||||
}
|
||||
|
||||
function logCallbackInterfaceMember(member: webidl2.IDLCallbackInterfaceMemberType) {
|
||||
switch (member.type) {
|
||||
case "operation":
|
||||
member; // $ExpectType OperationMemberType
|
||||
member.parent; // $ExpectType CallbackInterfaceType | InterfaceMixinType | InterfaceType | NamespaceType
|
||||
logNamespaceMember(member);
|
||||
break;
|
||||
|
||||
case "const":
|
||||
member; // $ExpectType ConstantMemberType
|
||||
member.parent; // $ExpectType CallbackInterfaceType | InterfaceMixinType | InterfaceType
|
||||
console.log(member.name);
|
||||
logIdlType(member.idlType);
|
||||
logValueDescription(member.value);
|
||||
console.log(member.nullable);
|
||||
break;
|
||||
|
||||
default:
|
||||
member; // $ExpectType never
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
function logNamespaceMembers(members: webidl2.IDLNamespaceMemberType[]) {
|
||||
for (const member of members) {
|
||||
logNamespaceMember(member);
|
||||
logExtAttrs(member.extAttrs);
|
||||
}
|
||||
}
|
||||
|
||||
@ -153,12 +234,14 @@ function logNamespaceMember(member: webidl2.IDLNamespaceMemberType) {
|
||||
console.log(member.name);
|
||||
console.log(member.special);
|
||||
break;
|
||||
|
||||
case "attribute":
|
||||
member; // $ExpectType AttributeMemberType
|
||||
member.parent; // $ExpectType InterfaceMixinType | InterfaceType | NamespaceType
|
||||
console.log(member.name);
|
||||
console.log(member.special, member.readonly, member.inherit);
|
||||
break;
|
||||
|
||||
default:
|
||||
member; // $ExpectType never
|
||||
break;
|
||||
@ -184,12 +267,14 @@ function logExtAttr(extAttr: webidl2.ExtendedAttribute) {
|
||||
rhs.value; // $ExpectType string
|
||||
logExtAttrRHS(rhs);
|
||||
break;
|
||||
|
||||
case "identifier-list":
|
||||
case "string-list":
|
||||
case "decimal-list":
|
||||
case "integer-list":
|
||||
logExtAttrRHSList(rhs);
|
||||
break;
|
||||
|
||||
default:
|
||||
rhs; // $ExpectType never
|
||||
break;
|
||||
@ -245,6 +330,10 @@ function logIdlType(idlType: webidl2.IDLTypeDescription) {
|
||||
case "record":
|
||||
idlType.idlType.length; // $ExpectType 2
|
||||
break;
|
||||
|
||||
default:
|
||||
idlType; // $ExpectType never
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
idlType; // $ExpectType SingleTypeDescription
|
||||
@ -262,36 +351,44 @@ function logValueDescription(valueDesc: webidl2.ValueDescription) {
|
||||
valueDesc.value; // $ExpectType string
|
||||
console.log(valueDesc.value);
|
||||
break;
|
||||
|
||||
case "number":
|
||||
valueDesc; // $ExpectType ValueDescriptionNumber
|
||||
valueDesc.value; // $ExpectType string
|
||||
console.log(valueDesc.value);
|
||||
break;
|
||||
|
||||
case "boolean":
|
||||
valueDesc; // $ExpectType ValueDescriptionBoolean
|
||||
valueDesc.value; // $ExpectType boolean
|
||||
console.log(valueDesc.value);
|
||||
break;
|
||||
|
||||
case "null":
|
||||
valueDesc; // $ExpectType ValueDescriptionNull
|
||||
break;
|
||||
|
||||
case "Infinity":
|
||||
valueDesc; // $ExpectType ValueDescriptionInfinity
|
||||
valueDesc.negative; // $ExpectType boolean
|
||||
console.log(valueDesc.negative);
|
||||
break;
|
||||
|
||||
case "NaN":
|
||||
valueDesc; // $ExpectType ValueDescriptionNaN
|
||||
break;
|
||||
|
||||
case "sequence":
|
||||
valueDesc; // $ExpectType ValueDescriptionSequence
|
||||
valueDesc.value; // $ExpectType []
|
||||
valueDesc.value.length; // $ExpectType 0
|
||||
console.log(valueDesc.value);
|
||||
break;
|
||||
|
||||
case "dictionary":
|
||||
valueDesc; // $ExpectType ValueDescriptionDictionary
|
||||
break;
|
||||
|
||||
default:
|
||||
valueDesc; // $ExpectType never
|
||||
break;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user