Add regression test
This commit is contained in:
parent
3e3b80826f
commit
d9b67231e1
82
tests/baselines/reference/narrowingByDiscriminantInLoop.js
Normal file
82
tests/baselines/reference/narrowingByDiscriminantInLoop.js
Normal file
|
@ -0,0 +1,82 @@
|
||||||
|
//// [narrowingByDiscriminantInLoop.ts]
|
||||||
|
// Repro from #9977
|
||||||
|
|
||||||
|
type IDLMemberTypes = OperationMemberType | ConstantMemberType;
|
||||||
|
|
||||||
|
interface IDLTypeDescription {
|
||||||
|
origin: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface InterfaceType {
|
||||||
|
members: IDLMemberTypes[];
|
||||||
|
}
|
||||||
|
|
||||||
|
interface OperationMemberType {
|
||||||
|
type: "operation";
|
||||||
|
idlType: IDLTypeDescription | null;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ConstantMemberType {
|
||||||
|
type: "const";
|
||||||
|
idlType: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
function insertInterface(callbackType: InterfaceType) {
|
||||||
|
for (const memberType of callbackType.members) {
|
||||||
|
if (memberType.type === "const") {
|
||||||
|
memberType.idlType; // string
|
||||||
|
}
|
||||||
|
else if (memberType.type === "operation") {
|
||||||
|
memberType.idlType.origin; // string
|
||||||
|
(memberType.idlType as IDLTypeDescription);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function insertInterface2(callbackType: InterfaceType) {
|
||||||
|
for (const memberType of callbackType.members) {
|
||||||
|
if (memberType.type === "operation") {
|
||||||
|
memberType.idlType.origin; // string
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function foo(memberType: IDLMemberTypes) {
|
||||||
|
if (memberType.type === "const") {
|
||||||
|
memberType.idlType; // string
|
||||||
|
}
|
||||||
|
else if (memberType.type === "operation") {
|
||||||
|
memberType.idlType.origin; // string
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//// [narrowingByDiscriminantInLoop.js]
|
||||||
|
// Repro from #9977
|
||||||
|
function insertInterface(callbackType) {
|
||||||
|
for (var _i = 0, _a = callbackType.members; _i < _a.length; _i++) {
|
||||||
|
var memberType = _a[_i];
|
||||||
|
if (memberType.type === "const") {
|
||||||
|
memberType.idlType; // string
|
||||||
|
}
|
||||||
|
else if (memberType.type === "operation") {
|
||||||
|
memberType.idlType.origin; // string
|
||||||
|
memberType.idlType;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function insertInterface2(callbackType) {
|
||||||
|
for (var _i = 0, _a = callbackType.members; _i < _a.length; _i++) {
|
||||||
|
var memberType = _a[_i];
|
||||||
|
if (memberType.type === "operation") {
|
||||||
|
memberType.idlType.origin; // string
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function foo(memberType) {
|
||||||
|
if (memberType.type === "const") {
|
||||||
|
memberType.idlType; // string
|
||||||
|
}
|
||||||
|
else if (memberType.type === "operation") {
|
||||||
|
memberType.idlType.origin; // string
|
||||||
|
}
|
||||||
|
}
|
140
tests/baselines/reference/narrowingByDiscriminantInLoop.symbols
Normal file
140
tests/baselines/reference/narrowingByDiscriminantInLoop.symbols
Normal file
|
@ -0,0 +1,140 @@
|
||||||
|
=== tests/cases/compiler/narrowingByDiscriminantInLoop.ts ===
|
||||||
|
// Repro from #9977
|
||||||
|
|
||||||
|
type IDLMemberTypes = OperationMemberType | ConstantMemberType;
|
||||||
|
>IDLMemberTypes : Symbol(IDLMemberTypes, Decl(narrowingByDiscriminantInLoop.ts, 0, 0))
|
||||||
|
>OperationMemberType : Symbol(OperationMemberType, Decl(narrowingByDiscriminantInLoop.ts, 10, 1))
|
||||||
|
>ConstantMemberType : Symbol(ConstantMemberType, Decl(narrowingByDiscriminantInLoop.ts, 15, 1))
|
||||||
|
|
||||||
|
interface IDLTypeDescription {
|
||||||
|
>IDLTypeDescription : Symbol(IDLTypeDescription, Decl(narrowingByDiscriminantInLoop.ts, 2, 63))
|
||||||
|
|
||||||
|
origin: string;
|
||||||
|
>origin : Symbol(IDLTypeDescription.origin, Decl(narrowingByDiscriminantInLoop.ts, 4, 30))
|
||||||
|
}
|
||||||
|
|
||||||
|
interface InterfaceType {
|
||||||
|
>InterfaceType : Symbol(InterfaceType, Decl(narrowingByDiscriminantInLoop.ts, 6, 1))
|
||||||
|
|
||||||
|
members: IDLMemberTypes[];
|
||||||
|
>members : Symbol(InterfaceType.members, Decl(narrowingByDiscriminantInLoop.ts, 8, 25))
|
||||||
|
>IDLMemberTypes : Symbol(IDLMemberTypes, Decl(narrowingByDiscriminantInLoop.ts, 0, 0))
|
||||||
|
}
|
||||||
|
|
||||||
|
interface OperationMemberType {
|
||||||
|
>OperationMemberType : Symbol(OperationMemberType, Decl(narrowingByDiscriminantInLoop.ts, 10, 1))
|
||||||
|
|
||||||
|
type: "operation";
|
||||||
|
>type : Symbol(OperationMemberType.type, Decl(narrowingByDiscriminantInLoop.ts, 12, 31))
|
||||||
|
|
||||||
|
idlType: IDLTypeDescription | null;
|
||||||
|
>idlType : Symbol(OperationMemberType.idlType, Decl(narrowingByDiscriminantInLoop.ts, 13, 22))
|
||||||
|
>IDLTypeDescription : Symbol(IDLTypeDescription, Decl(narrowingByDiscriminantInLoop.ts, 2, 63))
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ConstantMemberType {
|
||||||
|
>ConstantMemberType : Symbol(ConstantMemberType, Decl(narrowingByDiscriminantInLoop.ts, 15, 1))
|
||||||
|
|
||||||
|
type: "const";
|
||||||
|
>type : Symbol(ConstantMemberType.type, Decl(narrowingByDiscriminantInLoop.ts, 17, 30))
|
||||||
|
|
||||||
|
idlType: string;
|
||||||
|
>idlType : Symbol(ConstantMemberType.idlType, Decl(narrowingByDiscriminantInLoop.ts, 18, 18))
|
||||||
|
}
|
||||||
|
|
||||||
|
function insertInterface(callbackType: InterfaceType) {
|
||||||
|
>insertInterface : Symbol(insertInterface, Decl(narrowingByDiscriminantInLoop.ts, 20, 1))
|
||||||
|
>callbackType : Symbol(callbackType, Decl(narrowingByDiscriminantInLoop.ts, 22, 25))
|
||||||
|
>InterfaceType : Symbol(InterfaceType, Decl(narrowingByDiscriminantInLoop.ts, 6, 1))
|
||||||
|
|
||||||
|
for (const memberType of callbackType.members) {
|
||||||
|
>memberType : Symbol(memberType, Decl(narrowingByDiscriminantInLoop.ts, 23, 14))
|
||||||
|
>callbackType.members : Symbol(InterfaceType.members, Decl(narrowingByDiscriminantInLoop.ts, 8, 25))
|
||||||
|
>callbackType : Symbol(callbackType, Decl(narrowingByDiscriminantInLoop.ts, 22, 25))
|
||||||
|
>members : Symbol(InterfaceType.members, Decl(narrowingByDiscriminantInLoop.ts, 8, 25))
|
||||||
|
|
||||||
|
if (memberType.type === "const") {
|
||||||
|
>memberType.type : Symbol(type, Decl(narrowingByDiscriminantInLoop.ts, 12, 31), Decl(narrowingByDiscriminantInLoop.ts, 17, 30))
|
||||||
|
>memberType : Symbol(memberType, Decl(narrowingByDiscriminantInLoop.ts, 23, 14))
|
||||||
|
>type : Symbol(type, Decl(narrowingByDiscriminantInLoop.ts, 12, 31), Decl(narrowingByDiscriminantInLoop.ts, 17, 30))
|
||||||
|
|
||||||
|
memberType.idlType; // string
|
||||||
|
>memberType.idlType : Symbol(ConstantMemberType.idlType, Decl(narrowingByDiscriminantInLoop.ts, 18, 18))
|
||||||
|
>memberType : Symbol(memberType, Decl(narrowingByDiscriminantInLoop.ts, 23, 14))
|
||||||
|
>idlType : Symbol(ConstantMemberType.idlType, Decl(narrowingByDiscriminantInLoop.ts, 18, 18))
|
||||||
|
}
|
||||||
|
else if (memberType.type === "operation") {
|
||||||
|
>memberType.type : Symbol(OperationMemberType.type, Decl(narrowingByDiscriminantInLoop.ts, 12, 31))
|
||||||
|
>memberType : Symbol(memberType, Decl(narrowingByDiscriminantInLoop.ts, 23, 14))
|
||||||
|
>type : Symbol(OperationMemberType.type, Decl(narrowingByDiscriminantInLoop.ts, 12, 31))
|
||||||
|
|
||||||
|
memberType.idlType.origin; // string
|
||||||
|
>memberType.idlType.origin : Symbol(IDLTypeDescription.origin, Decl(narrowingByDiscriminantInLoop.ts, 4, 30))
|
||||||
|
>memberType.idlType : Symbol(OperationMemberType.idlType, Decl(narrowingByDiscriminantInLoop.ts, 13, 22))
|
||||||
|
>memberType : Symbol(memberType, Decl(narrowingByDiscriminantInLoop.ts, 23, 14))
|
||||||
|
>idlType : Symbol(OperationMemberType.idlType, Decl(narrowingByDiscriminantInLoop.ts, 13, 22))
|
||||||
|
>origin : Symbol(IDLTypeDescription.origin, Decl(narrowingByDiscriminantInLoop.ts, 4, 30))
|
||||||
|
|
||||||
|
(memberType.idlType as IDLTypeDescription);
|
||||||
|
>memberType.idlType : Symbol(OperationMemberType.idlType, Decl(narrowingByDiscriminantInLoop.ts, 13, 22))
|
||||||
|
>memberType : Symbol(memberType, Decl(narrowingByDiscriminantInLoop.ts, 23, 14))
|
||||||
|
>idlType : Symbol(OperationMemberType.idlType, Decl(narrowingByDiscriminantInLoop.ts, 13, 22))
|
||||||
|
>IDLTypeDescription : Symbol(IDLTypeDescription, Decl(narrowingByDiscriminantInLoop.ts, 2, 63))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function insertInterface2(callbackType: InterfaceType) {
|
||||||
|
>insertInterface2 : Symbol(insertInterface2, Decl(narrowingByDiscriminantInLoop.ts, 32, 1))
|
||||||
|
>callbackType : Symbol(callbackType, Decl(narrowingByDiscriminantInLoop.ts, 34, 26))
|
||||||
|
>InterfaceType : Symbol(InterfaceType, Decl(narrowingByDiscriminantInLoop.ts, 6, 1))
|
||||||
|
|
||||||
|
for (const memberType of callbackType.members) {
|
||||||
|
>memberType : Symbol(memberType, Decl(narrowingByDiscriminantInLoop.ts, 35, 14))
|
||||||
|
>callbackType.members : Symbol(InterfaceType.members, Decl(narrowingByDiscriminantInLoop.ts, 8, 25))
|
||||||
|
>callbackType : Symbol(callbackType, Decl(narrowingByDiscriminantInLoop.ts, 34, 26))
|
||||||
|
>members : Symbol(InterfaceType.members, Decl(narrowingByDiscriminantInLoop.ts, 8, 25))
|
||||||
|
|
||||||
|
if (memberType.type === "operation") {
|
||||||
|
>memberType.type : Symbol(type, Decl(narrowingByDiscriminantInLoop.ts, 12, 31), Decl(narrowingByDiscriminantInLoop.ts, 17, 30))
|
||||||
|
>memberType : Symbol(memberType, Decl(narrowingByDiscriminantInLoop.ts, 35, 14))
|
||||||
|
>type : Symbol(type, Decl(narrowingByDiscriminantInLoop.ts, 12, 31), Decl(narrowingByDiscriminantInLoop.ts, 17, 30))
|
||||||
|
|
||||||
|
memberType.idlType.origin; // string
|
||||||
|
>memberType.idlType.origin : Symbol(IDLTypeDescription.origin, Decl(narrowingByDiscriminantInLoop.ts, 4, 30))
|
||||||
|
>memberType.idlType : Symbol(OperationMemberType.idlType, Decl(narrowingByDiscriminantInLoop.ts, 13, 22))
|
||||||
|
>memberType : Symbol(memberType, Decl(narrowingByDiscriminantInLoop.ts, 35, 14))
|
||||||
|
>idlType : Symbol(OperationMemberType.idlType, Decl(narrowingByDiscriminantInLoop.ts, 13, 22))
|
||||||
|
>origin : Symbol(IDLTypeDescription.origin, Decl(narrowingByDiscriminantInLoop.ts, 4, 30))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function foo(memberType: IDLMemberTypes) {
|
||||||
|
>foo : Symbol(foo, Decl(narrowingByDiscriminantInLoop.ts, 40, 1))
|
||||||
|
>memberType : Symbol(memberType, Decl(narrowingByDiscriminantInLoop.ts, 42, 13))
|
||||||
|
>IDLMemberTypes : Symbol(IDLMemberTypes, Decl(narrowingByDiscriminantInLoop.ts, 0, 0))
|
||||||
|
|
||||||
|
if (memberType.type === "const") {
|
||||||
|
>memberType.type : Symbol(type, Decl(narrowingByDiscriminantInLoop.ts, 12, 31), Decl(narrowingByDiscriminantInLoop.ts, 17, 30))
|
||||||
|
>memberType : Symbol(memberType, Decl(narrowingByDiscriminantInLoop.ts, 42, 13))
|
||||||
|
>type : Symbol(type, Decl(narrowingByDiscriminantInLoop.ts, 12, 31), Decl(narrowingByDiscriminantInLoop.ts, 17, 30))
|
||||||
|
|
||||||
|
memberType.idlType; // string
|
||||||
|
>memberType.idlType : Symbol(ConstantMemberType.idlType, Decl(narrowingByDiscriminantInLoop.ts, 18, 18))
|
||||||
|
>memberType : Symbol(memberType, Decl(narrowingByDiscriminantInLoop.ts, 42, 13))
|
||||||
|
>idlType : Symbol(ConstantMemberType.idlType, Decl(narrowingByDiscriminantInLoop.ts, 18, 18))
|
||||||
|
}
|
||||||
|
else if (memberType.type === "operation") {
|
||||||
|
>memberType.type : Symbol(OperationMemberType.type, Decl(narrowingByDiscriminantInLoop.ts, 12, 31))
|
||||||
|
>memberType : Symbol(memberType, Decl(narrowingByDiscriminantInLoop.ts, 42, 13))
|
||||||
|
>type : Symbol(OperationMemberType.type, Decl(narrowingByDiscriminantInLoop.ts, 12, 31))
|
||||||
|
|
||||||
|
memberType.idlType.origin; // string
|
||||||
|
>memberType.idlType.origin : Symbol(IDLTypeDescription.origin, Decl(narrowingByDiscriminantInLoop.ts, 4, 30))
|
||||||
|
>memberType.idlType : Symbol(OperationMemberType.idlType, Decl(narrowingByDiscriminantInLoop.ts, 13, 22))
|
||||||
|
>memberType : Symbol(memberType, Decl(narrowingByDiscriminantInLoop.ts, 42, 13))
|
||||||
|
>idlType : Symbol(OperationMemberType.idlType, Decl(narrowingByDiscriminantInLoop.ts, 13, 22))
|
||||||
|
>origin : Symbol(IDLTypeDescription.origin, Decl(narrowingByDiscriminantInLoop.ts, 4, 30))
|
||||||
|
}
|
||||||
|
}
|
153
tests/baselines/reference/narrowingByDiscriminantInLoop.types
Normal file
153
tests/baselines/reference/narrowingByDiscriminantInLoop.types
Normal file
|
@ -0,0 +1,153 @@
|
||||||
|
=== tests/cases/compiler/narrowingByDiscriminantInLoop.ts ===
|
||||||
|
// Repro from #9977
|
||||||
|
|
||||||
|
type IDLMemberTypes = OperationMemberType | ConstantMemberType;
|
||||||
|
>IDLMemberTypes : IDLMemberTypes
|
||||||
|
>OperationMemberType : OperationMemberType
|
||||||
|
>ConstantMemberType : ConstantMemberType
|
||||||
|
|
||||||
|
interface IDLTypeDescription {
|
||||||
|
>IDLTypeDescription : IDLTypeDescription
|
||||||
|
|
||||||
|
origin: string;
|
||||||
|
>origin : string
|
||||||
|
}
|
||||||
|
|
||||||
|
interface InterfaceType {
|
||||||
|
>InterfaceType : InterfaceType
|
||||||
|
|
||||||
|
members: IDLMemberTypes[];
|
||||||
|
>members : IDLMemberTypes[]
|
||||||
|
>IDLMemberTypes : IDLMemberTypes
|
||||||
|
}
|
||||||
|
|
||||||
|
interface OperationMemberType {
|
||||||
|
>OperationMemberType : OperationMemberType
|
||||||
|
|
||||||
|
type: "operation";
|
||||||
|
>type : "operation"
|
||||||
|
|
||||||
|
idlType: IDLTypeDescription | null;
|
||||||
|
>idlType : IDLTypeDescription
|
||||||
|
>IDLTypeDescription : IDLTypeDescription
|
||||||
|
>null : null
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ConstantMemberType {
|
||||||
|
>ConstantMemberType : ConstantMemberType
|
||||||
|
|
||||||
|
type: "const";
|
||||||
|
>type : "const"
|
||||||
|
|
||||||
|
idlType: string;
|
||||||
|
>idlType : string
|
||||||
|
}
|
||||||
|
|
||||||
|
function insertInterface(callbackType: InterfaceType) {
|
||||||
|
>insertInterface : (callbackType: InterfaceType) => void
|
||||||
|
>callbackType : InterfaceType
|
||||||
|
>InterfaceType : InterfaceType
|
||||||
|
|
||||||
|
for (const memberType of callbackType.members) {
|
||||||
|
>memberType : IDLMemberTypes
|
||||||
|
>callbackType.members : IDLMemberTypes[]
|
||||||
|
>callbackType : InterfaceType
|
||||||
|
>members : IDLMemberTypes[]
|
||||||
|
|
||||||
|
if (memberType.type === "const") {
|
||||||
|
>memberType.type === "const" : boolean
|
||||||
|
>memberType.type : "operation" | "const"
|
||||||
|
>memberType : IDLMemberTypes
|
||||||
|
>type : "operation" | "const"
|
||||||
|
>"const" : "const"
|
||||||
|
|
||||||
|
memberType.idlType; // string
|
||||||
|
>memberType.idlType : string
|
||||||
|
>memberType : ConstantMemberType
|
||||||
|
>idlType : string
|
||||||
|
}
|
||||||
|
else if (memberType.type === "operation") {
|
||||||
|
>memberType.type === "operation" : boolean
|
||||||
|
>memberType.type : "operation"
|
||||||
|
>memberType : OperationMemberType
|
||||||
|
>type : "operation"
|
||||||
|
>"operation" : "operation"
|
||||||
|
|
||||||
|
memberType.idlType.origin; // string
|
||||||
|
>memberType.idlType.origin : string
|
||||||
|
>memberType.idlType : IDLTypeDescription
|
||||||
|
>memberType : OperationMemberType
|
||||||
|
>idlType : IDLTypeDescription
|
||||||
|
>origin : string
|
||||||
|
|
||||||
|
(memberType.idlType as IDLTypeDescription);
|
||||||
|
>(memberType.idlType as IDLTypeDescription) : IDLTypeDescription
|
||||||
|
>memberType.idlType as IDLTypeDescription : IDLTypeDescription
|
||||||
|
>memberType.idlType : IDLTypeDescription
|
||||||
|
>memberType : OperationMemberType
|
||||||
|
>idlType : IDLTypeDescription
|
||||||
|
>IDLTypeDescription : IDLTypeDescription
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function insertInterface2(callbackType: InterfaceType) {
|
||||||
|
>insertInterface2 : (callbackType: InterfaceType) => void
|
||||||
|
>callbackType : InterfaceType
|
||||||
|
>InterfaceType : InterfaceType
|
||||||
|
|
||||||
|
for (const memberType of callbackType.members) {
|
||||||
|
>memberType : IDLMemberTypes
|
||||||
|
>callbackType.members : IDLMemberTypes[]
|
||||||
|
>callbackType : InterfaceType
|
||||||
|
>members : IDLMemberTypes[]
|
||||||
|
|
||||||
|
if (memberType.type === "operation") {
|
||||||
|
>memberType.type === "operation" : boolean
|
||||||
|
>memberType.type : "operation" | "const"
|
||||||
|
>memberType : IDLMemberTypes
|
||||||
|
>type : "operation" | "const"
|
||||||
|
>"operation" : "operation"
|
||||||
|
|
||||||
|
memberType.idlType.origin; // string
|
||||||
|
>memberType.idlType.origin : string
|
||||||
|
>memberType.idlType : IDLTypeDescription
|
||||||
|
>memberType : OperationMemberType
|
||||||
|
>idlType : IDLTypeDescription
|
||||||
|
>origin : string
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function foo(memberType: IDLMemberTypes) {
|
||||||
|
>foo : (memberType: IDLMemberTypes) => void
|
||||||
|
>memberType : IDLMemberTypes
|
||||||
|
>IDLMemberTypes : IDLMemberTypes
|
||||||
|
|
||||||
|
if (memberType.type === "const") {
|
||||||
|
>memberType.type === "const" : boolean
|
||||||
|
>memberType.type : "operation" | "const"
|
||||||
|
>memberType : IDLMemberTypes
|
||||||
|
>type : "operation" | "const"
|
||||||
|
>"const" : "const"
|
||||||
|
|
||||||
|
memberType.idlType; // string
|
||||||
|
>memberType.idlType : string
|
||||||
|
>memberType : ConstantMemberType
|
||||||
|
>idlType : string
|
||||||
|
}
|
||||||
|
else if (memberType.type === "operation") {
|
||||||
|
>memberType.type === "operation" : boolean
|
||||||
|
>memberType.type : "operation"
|
||||||
|
>memberType : OperationMemberType
|
||||||
|
>type : "operation"
|
||||||
|
>"operation" : "operation"
|
||||||
|
|
||||||
|
memberType.idlType.origin; // string
|
||||||
|
>memberType.idlType.origin : string
|
||||||
|
>memberType.idlType : IDLTypeDescription
|
||||||
|
>memberType : OperationMemberType
|
||||||
|
>idlType : IDLTypeDescription
|
||||||
|
>origin : string
|
||||||
|
}
|
||||||
|
}
|
50
tests/cases/compiler/narrowingByDiscriminantInLoop.ts
Normal file
50
tests/cases/compiler/narrowingByDiscriminantInLoop.ts
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
// Repro from #9977
|
||||||
|
|
||||||
|
type IDLMemberTypes = OperationMemberType | ConstantMemberType;
|
||||||
|
|
||||||
|
interface IDLTypeDescription {
|
||||||
|
origin: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface InterfaceType {
|
||||||
|
members: IDLMemberTypes[];
|
||||||
|
}
|
||||||
|
|
||||||
|
interface OperationMemberType {
|
||||||
|
type: "operation";
|
||||||
|
idlType: IDLTypeDescription | null;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ConstantMemberType {
|
||||||
|
type: "const";
|
||||||
|
idlType: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
function insertInterface(callbackType: InterfaceType) {
|
||||||
|
for (const memberType of callbackType.members) {
|
||||||
|
if (memberType.type === "const") {
|
||||||
|
memberType.idlType; // string
|
||||||
|
}
|
||||||
|
else if (memberType.type === "operation") {
|
||||||
|
memberType.idlType.origin; // string
|
||||||
|
(memberType.idlType as IDLTypeDescription);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function insertInterface2(callbackType: InterfaceType) {
|
||||||
|
for (const memberType of callbackType.members) {
|
||||||
|
if (memberType.type === "operation") {
|
||||||
|
memberType.idlType.origin; // string
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function foo(memberType: IDLMemberTypes) {
|
||||||
|
if (memberType.type === "const") {
|
||||||
|
memberType.idlType; // string
|
||||||
|
}
|
||||||
|
else if (memberType.type === "operation") {
|
||||||
|
memberType.idlType.origin; // string
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue