nodes.js 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790
  1. function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
  2. // THIS FILE IS AUTOGENERATED
  3. // see scripts/generateNodeUtils.js
  4. function isTypeOf(t) {
  5. return function (n) {
  6. return n.type === t;
  7. };
  8. }
  9. function assertTypeOf(t) {
  10. return function (n) {
  11. return function () {
  12. if (!(n.type === t)) {
  13. throw new Error('n.type === t' + " error: " + (undefined || "unknown"));
  14. }
  15. }();
  16. };
  17. }
  18. export function module(id, fields, metadata) {
  19. if (id !== null && id !== undefined) {
  20. if (!(typeof id === "string")) {
  21. throw new Error('typeof id === "string"' + " error: " + ("Argument id must be of type string, given: " + _typeof(id) || "unknown"));
  22. }
  23. }
  24. if (!(_typeof(fields) === "object" && typeof fields.length !== "undefined")) {
  25. throw new Error('typeof fields === "object" && typeof fields.length !== "undefined"' + " error: " + (undefined || "unknown"));
  26. }
  27. var node = {
  28. type: "Module",
  29. id: id,
  30. fields: fields
  31. };
  32. if (typeof metadata !== "undefined") {
  33. node.metadata = metadata;
  34. }
  35. return node;
  36. }
  37. export function moduleMetadata(sections, functionNames, localNames) {
  38. if (!(_typeof(sections) === "object" && typeof sections.length !== "undefined")) {
  39. throw new Error('typeof sections === "object" && typeof sections.length !== "undefined"' + " error: " + (undefined || "unknown"));
  40. }
  41. if (functionNames !== null && functionNames !== undefined) {
  42. if (!(_typeof(functionNames) === "object" && typeof functionNames.length !== "undefined")) {
  43. throw new Error('typeof functionNames === "object" && typeof functionNames.length !== "undefined"' + " error: " + (undefined || "unknown"));
  44. }
  45. }
  46. if (localNames !== null && localNames !== undefined) {
  47. if (!(_typeof(localNames) === "object" && typeof localNames.length !== "undefined")) {
  48. throw new Error('typeof localNames === "object" && typeof localNames.length !== "undefined"' + " error: " + (undefined || "unknown"));
  49. }
  50. }
  51. var node = {
  52. type: "ModuleMetadata",
  53. sections: sections
  54. };
  55. if (typeof functionNames !== "undefined" && functionNames.length > 0) {
  56. node.functionNames = functionNames;
  57. }
  58. if (typeof localNames !== "undefined" && localNames.length > 0) {
  59. node.localNames = localNames;
  60. }
  61. return node;
  62. }
  63. export function moduleNameMetadata(value) {
  64. if (!(typeof value === "string")) {
  65. throw new Error('typeof value === "string"' + " error: " + ("Argument value must be of type string, given: " + _typeof(value) || "unknown"));
  66. }
  67. var node = {
  68. type: "ModuleNameMetadata",
  69. value: value
  70. };
  71. return node;
  72. }
  73. export function functionNameMetadata(value, index) {
  74. if (!(typeof value === "string")) {
  75. throw new Error('typeof value === "string"' + " error: " + ("Argument value must be of type string, given: " + _typeof(value) || "unknown"));
  76. }
  77. if (!(typeof index === "number")) {
  78. throw new Error('typeof index === "number"' + " error: " + ("Argument index must be of type number, given: " + _typeof(index) || "unknown"));
  79. }
  80. var node = {
  81. type: "FunctionNameMetadata",
  82. value: value,
  83. index: index
  84. };
  85. return node;
  86. }
  87. export function localNameMetadata(value, localIndex, functionIndex) {
  88. if (!(typeof value === "string")) {
  89. throw new Error('typeof value === "string"' + " error: " + ("Argument value must be of type string, given: " + _typeof(value) || "unknown"));
  90. }
  91. if (!(typeof localIndex === "number")) {
  92. throw new Error('typeof localIndex === "number"' + " error: " + ("Argument localIndex must be of type number, given: " + _typeof(localIndex) || "unknown"));
  93. }
  94. if (!(typeof functionIndex === "number")) {
  95. throw new Error('typeof functionIndex === "number"' + " error: " + ("Argument functionIndex must be of type number, given: " + _typeof(functionIndex) || "unknown"));
  96. }
  97. var node = {
  98. type: "LocalNameMetadata",
  99. value: value,
  100. localIndex: localIndex,
  101. functionIndex: functionIndex
  102. };
  103. return node;
  104. }
  105. export function binaryModule(id, blob) {
  106. if (id !== null && id !== undefined) {
  107. if (!(typeof id === "string")) {
  108. throw new Error('typeof id === "string"' + " error: " + ("Argument id must be of type string, given: " + _typeof(id) || "unknown"));
  109. }
  110. }
  111. if (!(_typeof(blob) === "object" && typeof blob.length !== "undefined")) {
  112. throw new Error('typeof blob === "object" && typeof blob.length !== "undefined"' + " error: " + (undefined || "unknown"));
  113. }
  114. var node = {
  115. type: "BinaryModule",
  116. id: id,
  117. blob: blob
  118. };
  119. return node;
  120. }
  121. export function quoteModule(id, string) {
  122. if (id !== null && id !== undefined) {
  123. if (!(typeof id === "string")) {
  124. throw new Error('typeof id === "string"' + " error: " + ("Argument id must be of type string, given: " + _typeof(id) || "unknown"));
  125. }
  126. }
  127. if (!(_typeof(string) === "object" && typeof string.length !== "undefined")) {
  128. throw new Error('typeof string === "object" && typeof string.length !== "undefined"' + " error: " + (undefined || "unknown"));
  129. }
  130. var node = {
  131. type: "QuoteModule",
  132. id: id,
  133. string: string
  134. };
  135. return node;
  136. }
  137. export function sectionMetadata(section, startOffset, size, vectorOfSize) {
  138. if (!(typeof startOffset === "number")) {
  139. throw new Error('typeof startOffset === "number"' + " error: " + ("Argument startOffset must be of type number, given: " + _typeof(startOffset) || "unknown"));
  140. }
  141. var node = {
  142. type: "SectionMetadata",
  143. section: section,
  144. startOffset: startOffset,
  145. size: size,
  146. vectorOfSize: vectorOfSize
  147. };
  148. return node;
  149. }
  150. export function loopInstruction(label, resulttype, instr) {
  151. if (!(_typeof(instr) === "object" && typeof instr.length !== "undefined")) {
  152. throw new Error('typeof instr === "object" && typeof instr.length !== "undefined"' + " error: " + (undefined || "unknown"));
  153. }
  154. var node = {
  155. type: "LoopInstruction",
  156. id: "loop",
  157. label: label,
  158. resulttype: resulttype,
  159. instr: instr
  160. };
  161. return node;
  162. }
  163. export function instr(id, object, args, namedArgs) {
  164. if (!(typeof id === "string")) {
  165. throw new Error('typeof id === "string"' + " error: " + ("Argument id must be of type string, given: " + _typeof(id) || "unknown"));
  166. }
  167. if (!(_typeof(args) === "object" && typeof args.length !== "undefined")) {
  168. throw new Error('typeof args === "object" && typeof args.length !== "undefined"' + " error: " + (undefined || "unknown"));
  169. }
  170. var node = {
  171. type: "Instr",
  172. id: id,
  173. args: args
  174. };
  175. if (typeof object !== "undefined") {
  176. node.object = object;
  177. }
  178. if (typeof namedArgs !== "undefined" && Object.keys(namedArgs).length !== 0) {
  179. node.namedArgs = namedArgs;
  180. }
  181. return node;
  182. }
  183. export function ifInstruction(testLabel, test, result, consequent, alternate) {
  184. if (!(_typeof(test) === "object" && typeof test.length !== "undefined")) {
  185. throw new Error('typeof test === "object" && typeof test.length !== "undefined"' + " error: " + (undefined || "unknown"));
  186. }
  187. if (!(_typeof(consequent) === "object" && typeof consequent.length !== "undefined")) {
  188. throw new Error('typeof consequent === "object" && typeof consequent.length !== "undefined"' + " error: " + (undefined || "unknown"));
  189. }
  190. if (!(_typeof(alternate) === "object" && typeof alternate.length !== "undefined")) {
  191. throw new Error('typeof alternate === "object" && typeof alternate.length !== "undefined"' + " error: " + (undefined || "unknown"));
  192. }
  193. var node = {
  194. type: "IfInstruction",
  195. id: "if",
  196. testLabel: testLabel,
  197. test: test,
  198. result: result,
  199. consequent: consequent,
  200. alternate: alternate
  201. };
  202. return node;
  203. }
  204. export function stringLiteral(value) {
  205. if (!(typeof value === "string")) {
  206. throw new Error('typeof value === "string"' + " error: " + ("Argument value must be of type string, given: " + _typeof(value) || "unknown"));
  207. }
  208. var node = {
  209. type: "StringLiteral",
  210. value: value
  211. };
  212. return node;
  213. }
  214. export function numberLiteral(value, raw) {
  215. if (!(typeof value === "number")) {
  216. throw new Error('typeof value === "number"' + " error: " + ("Argument value must be of type number, given: " + _typeof(value) || "unknown"));
  217. }
  218. if (!(typeof raw === "string")) {
  219. throw new Error('typeof raw === "string"' + " error: " + ("Argument raw must be of type string, given: " + _typeof(raw) || "unknown"));
  220. }
  221. var node = {
  222. type: "NumberLiteral",
  223. value: value,
  224. raw: raw
  225. };
  226. return node;
  227. }
  228. export function longNumberLiteral(value, raw) {
  229. if (!(typeof raw === "string")) {
  230. throw new Error('typeof raw === "string"' + " error: " + ("Argument raw must be of type string, given: " + _typeof(raw) || "unknown"));
  231. }
  232. var node = {
  233. type: "LongNumberLiteral",
  234. value: value,
  235. raw: raw
  236. };
  237. return node;
  238. }
  239. export function floatLiteral(value, nan, inf, raw) {
  240. if (!(typeof value === "number")) {
  241. throw new Error('typeof value === "number"' + " error: " + ("Argument value must be of type number, given: " + _typeof(value) || "unknown"));
  242. }
  243. if (nan !== null && nan !== undefined) {
  244. if (!(typeof nan === "boolean")) {
  245. throw new Error('typeof nan === "boolean"' + " error: " + ("Argument nan must be of type boolean, given: " + _typeof(nan) || "unknown"));
  246. }
  247. }
  248. if (inf !== null && inf !== undefined) {
  249. if (!(typeof inf === "boolean")) {
  250. throw new Error('typeof inf === "boolean"' + " error: " + ("Argument inf must be of type boolean, given: " + _typeof(inf) || "unknown"));
  251. }
  252. }
  253. if (!(typeof raw === "string")) {
  254. throw new Error('typeof raw === "string"' + " error: " + ("Argument raw must be of type string, given: " + _typeof(raw) || "unknown"));
  255. }
  256. var node = {
  257. type: "FloatLiteral",
  258. value: value,
  259. raw: raw
  260. };
  261. if (nan === true) {
  262. node.nan = true;
  263. }
  264. if (inf === true) {
  265. node.inf = true;
  266. }
  267. return node;
  268. }
  269. export function elem(table, offset, funcs) {
  270. if (!(_typeof(offset) === "object" && typeof offset.length !== "undefined")) {
  271. throw new Error('typeof offset === "object" && typeof offset.length !== "undefined"' + " error: " + (undefined || "unknown"));
  272. }
  273. if (!(_typeof(funcs) === "object" && typeof funcs.length !== "undefined")) {
  274. throw new Error('typeof funcs === "object" && typeof funcs.length !== "undefined"' + " error: " + (undefined || "unknown"));
  275. }
  276. var node = {
  277. type: "Elem",
  278. table: table,
  279. offset: offset,
  280. funcs: funcs
  281. };
  282. return node;
  283. }
  284. export function indexInFuncSection(index) {
  285. var node = {
  286. type: "IndexInFuncSection",
  287. index: index
  288. };
  289. return node;
  290. }
  291. export function valtypeLiteral(name) {
  292. var node = {
  293. type: "ValtypeLiteral",
  294. name: name
  295. };
  296. return node;
  297. }
  298. export function typeInstruction(id, functype) {
  299. var node = {
  300. type: "TypeInstruction",
  301. id: id,
  302. functype: functype
  303. };
  304. return node;
  305. }
  306. export function start(index) {
  307. var node = {
  308. type: "Start",
  309. index: index
  310. };
  311. return node;
  312. }
  313. export function globalType(valtype, mutability) {
  314. var node = {
  315. type: "GlobalType",
  316. valtype: valtype,
  317. mutability: mutability
  318. };
  319. return node;
  320. }
  321. export function leadingComment(value) {
  322. if (!(typeof value === "string")) {
  323. throw new Error('typeof value === "string"' + " error: " + ("Argument value must be of type string, given: " + _typeof(value) || "unknown"));
  324. }
  325. var node = {
  326. type: "LeadingComment",
  327. value: value
  328. };
  329. return node;
  330. }
  331. export function blockComment(value) {
  332. if (!(typeof value === "string")) {
  333. throw new Error('typeof value === "string"' + " error: " + ("Argument value must be of type string, given: " + _typeof(value) || "unknown"));
  334. }
  335. var node = {
  336. type: "BlockComment",
  337. value: value
  338. };
  339. return node;
  340. }
  341. export function data(memoryIndex, offset, init) {
  342. var node = {
  343. type: "Data",
  344. memoryIndex: memoryIndex,
  345. offset: offset,
  346. init: init
  347. };
  348. return node;
  349. }
  350. export function global(globalType, init, name) {
  351. if (!(_typeof(init) === "object" && typeof init.length !== "undefined")) {
  352. throw new Error('typeof init === "object" && typeof init.length !== "undefined"' + " error: " + (undefined || "unknown"));
  353. }
  354. var node = {
  355. type: "Global",
  356. globalType: globalType,
  357. init: init,
  358. name: name
  359. };
  360. return node;
  361. }
  362. export function table(elementType, limits, name, elements) {
  363. if (!(limits.type === "Limit")) {
  364. throw new Error('limits.type === "Limit"' + " error: " + ("Argument limits must be of type Limit, given: " + limits.type || "unknown"));
  365. }
  366. if (elements !== null && elements !== undefined) {
  367. if (!(_typeof(elements) === "object" && typeof elements.length !== "undefined")) {
  368. throw new Error('typeof elements === "object" && typeof elements.length !== "undefined"' + " error: " + (undefined || "unknown"));
  369. }
  370. }
  371. var node = {
  372. type: "Table",
  373. elementType: elementType,
  374. limits: limits,
  375. name: name
  376. };
  377. if (typeof elements !== "undefined" && elements.length > 0) {
  378. node.elements = elements;
  379. }
  380. return node;
  381. }
  382. export function memory(limits, id) {
  383. var node = {
  384. type: "Memory",
  385. limits: limits,
  386. id: id
  387. };
  388. return node;
  389. }
  390. export function funcImportDescr(id, signature) {
  391. var node = {
  392. type: "FuncImportDescr",
  393. id: id,
  394. signature: signature
  395. };
  396. return node;
  397. }
  398. export function moduleImport(module, name, descr) {
  399. if (!(typeof module === "string")) {
  400. throw new Error('typeof module === "string"' + " error: " + ("Argument module must be of type string, given: " + _typeof(module) || "unknown"));
  401. }
  402. if (!(typeof name === "string")) {
  403. throw new Error('typeof name === "string"' + " error: " + ("Argument name must be of type string, given: " + _typeof(name) || "unknown"));
  404. }
  405. var node = {
  406. type: "ModuleImport",
  407. module: module,
  408. name: name,
  409. descr: descr
  410. };
  411. return node;
  412. }
  413. export function moduleExportDescr(exportType, id) {
  414. var node = {
  415. type: "ModuleExportDescr",
  416. exportType: exportType,
  417. id: id
  418. };
  419. return node;
  420. }
  421. export function moduleExport(name, descr) {
  422. if (!(typeof name === "string")) {
  423. throw new Error('typeof name === "string"' + " error: " + ("Argument name must be of type string, given: " + _typeof(name) || "unknown"));
  424. }
  425. var node = {
  426. type: "ModuleExport",
  427. name: name,
  428. descr: descr
  429. };
  430. return node;
  431. }
  432. export function limit(min, max) {
  433. if (!(typeof min === "number")) {
  434. throw new Error('typeof min === "number"' + " error: " + ("Argument min must be of type number, given: " + _typeof(min) || "unknown"));
  435. }
  436. if (max !== null && max !== undefined) {
  437. if (!(typeof max === "number")) {
  438. throw new Error('typeof max === "number"' + " error: " + ("Argument max must be of type number, given: " + _typeof(max) || "unknown"));
  439. }
  440. }
  441. var node = {
  442. type: "Limit",
  443. min: min
  444. };
  445. if (typeof max !== "undefined") {
  446. node.max = max;
  447. }
  448. return node;
  449. }
  450. export function signature(params, results) {
  451. if (!(_typeof(params) === "object" && typeof params.length !== "undefined")) {
  452. throw new Error('typeof params === "object" && typeof params.length !== "undefined"' + " error: " + (undefined || "unknown"));
  453. }
  454. if (!(_typeof(results) === "object" && typeof results.length !== "undefined")) {
  455. throw new Error('typeof results === "object" && typeof results.length !== "undefined"' + " error: " + (undefined || "unknown"));
  456. }
  457. var node = {
  458. type: "Signature",
  459. params: params,
  460. results: results
  461. };
  462. return node;
  463. }
  464. export function program(body) {
  465. if (!(_typeof(body) === "object" && typeof body.length !== "undefined")) {
  466. throw new Error('typeof body === "object" && typeof body.length !== "undefined"' + " error: " + (undefined || "unknown"));
  467. }
  468. var node = {
  469. type: "Program",
  470. body: body
  471. };
  472. return node;
  473. }
  474. export function identifier(value, raw) {
  475. if (!(typeof value === "string")) {
  476. throw new Error('typeof value === "string"' + " error: " + ("Argument value must be of type string, given: " + _typeof(value) || "unknown"));
  477. }
  478. if (raw !== null && raw !== undefined) {
  479. if (!(typeof raw === "string")) {
  480. throw new Error('typeof raw === "string"' + " error: " + ("Argument raw must be of type string, given: " + _typeof(raw) || "unknown"));
  481. }
  482. }
  483. var node = {
  484. type: "Identifier",
  485. value: value
  486. };
  487. if (typeof raw !== "undefined") {
  488. node.raw = raw;
  489. }
  490. return node;
  491. }
  492. export function blockInstruction(label, instr, result) {
  493. if (!(_typeof(instr) === "object" && typeof instr.length !== "undefined")) {
  494. throw new Error('typeof instr === "object" && typeof instr.length !== "undefined"' + " error: " + (undefined || "unknown"));
  495. }
  496. var node = {
  497. type: "BlockInstruction",
  498. id: "block",
  499. label: label,
  500. instr: instr,
  501. result: result
  502. };
  503. return node;
  504. }
  505. export function callInstruction(index, instrArgs) {
  506. if (instrArgs !== null && instrArgs !== undefined) {
  507. if (!(_typeof(instrArgs) === "object" && typeof instrArgs.length !== "undefined")) {
  508. throw new Error('typeof instrArgs === "object" && typeof instrArgs.length !== "undefined"' + " error: " + (undefined || "unknown"));
  509. }
  510. }
  511. var node = {
  512. type: "CallInstruction",
  513. id: "call",
  514. index: index
  515. };
  516. if (typeof instrArgs !== "undefined" && instrArgs.length > 0) {
  517. node.instrArgs = instrArgs;
  518. }
  519. return node;
  520. }
  521. export function callIndirectInstruction(signature, intrs) {
  522. if (intrs !== null && intrs !== undefined) {
  523. if (!(_typeof(intrs) === "object" && typeof intrs.length !== "undefined")) {
  524. throw new Error('typeof intrs === "object" && typeof intrs.length !== "undefined"' + " error: " + (undefined || "unknown"));
  525. }
  526. }
  527. var node = {
  528. type: "CallIndirectInstruction",
  529. id: "call_indirect",
  530. signature: signature
  531. };
  532. if (typeof intrs !== "undefined" && intrs.length > 0) {
  533. node.intrs = intrs;
  534. }
  535. return node;
  536. }
  537. export function byteArray(values) {
  538. if (!(_typeof(values) === "object" && typeof values.length !== "undefined")) {
  539. throw new Error('typeof values === "object" && typeof values.length !== "undefined"' + " error: " + (undefined || "unknown"));
  540. }
  541. var node = {
  542. type: "ByteArray",
  543. values: values
  544. };
  545. return node;
  546. }
  547. export function func(name, signature, body, isExternal, metadata) {
  548. if (!(_typeof(body) === "object" && typeof body.length !== "undefined")) {
  549. throw new Error('typeof body === "object" && typeof body.length !== "undefined"' + " error: " + (undefined || "unknown"));
  550. }
  551. if (isExternal !== null && isExternal !== undefined) {
  552. if (!(typeof isExternal === "boolean")) {
  553. throw new Error('typeof isExternal === "boolean"' + " error: " + ("Argument isExternal must be of type boolean, given: " + _typeof(isExternal) || "unknown"));
  554. }
  555. }
  556. var node = {
  557. type: "Func",
  558. name: name,
  559. signature: signature,
  560. body: body
  561. };
  562. if (isExternal === true) {
  563. node.isExternal = true;
  564. }
  565. if (typeof metadata !== "undefined") {
  566. node.metadata = metadata;
  567. }
  568. return node;
  569. }
  570. export var isModule = isTypeOf("Module");
  571. export var isModuleMetadata = isTypeOf("ModuleMetadata");
  572. export var isModuleNameMetadata = isTypeOf("ModuleNameMetadata");
  573. export var isFunctionNameMetadata = isTypeOf("FunctionNameMetadata");
  574. export var isLocalNameMetadata = isTypeOf("LocalNameMetadata");
  575. export var isBinaryModule = isTypeOf("BinaryModule");
  576. export var isQuoteModule = isTypeOf("QuoteModule");
  577. export var isSectionMetadata = isTypeOf("SectionMetadata");
  578. export var isLoopInstruction = isTypeOf("LoopInstruction");
  579. export var isInstr = isTypeOf("Instr");
  580. export var isIfInstruction = isTypeOf("IfInstruction");
  581. export var isStringLiteral = isTypeOf("StringLiteral");
  582. export var isNumberLiteral = isTypeOf("NumberLiteral");
  583. export var isLongNumberLiteral = isTypeOf("LongNumberLiteral");
  584. export var isFloatLiteral = isTypeOf("FloatLiteral");
  585. export var isElem = isTypeOf("Elem");
  586. export var isIndexInFuncSection = isTypeOf("IndexInFuncSection");
  587. export var isValtypeLiteral = isTypeOf("ValtypeLiteral");
  588. export var isTypeInstruction = isTypeOf("TypeInstruction");
  589. export var isStart = isTypeOf("Start");
  590. export var isGlobalType = isTypeOf("GlobalType");
  591. export var isLeadingComment = isTypeOf("LeadingComment");
  592. export var isBlockComment = isTypeOf("BlockComment");
  593. export var isData = isTypeOf("Data");
  594. export var isGlobal = isTypeOf("Global");
  595. export var isTable = isTypeOf("Table");
  596. export var isMemory = isTypeOf("Memory");
  597. export var isFuncImportDescr = isTypeOf("FuncImportDescr");
  598. export var isModuleImport = isTypeOf("ModuleImport");
  599. export var isModuleExportDescr = isTypeOf("ModuleExportDescr");
  600. export var isModuleExport = isTypeOf("ModuleExport");
  601. export var isLimit = isTypeOf("Limit");
  602. export var isSignature = isTypeOf("Signature");
  603. export var isProgram = isTypeOf("Program");
  604. export var isIdentifier = isTypeOf("Identifier");
  605. export var isBlockInstruction = isTypeOf("BlockInstruction");
  606. export var isCallInstruction = isTypeOf("CallInstruction");
  607. export var isCallIndirectInstruction = isTypeOf("CallIndirectInstruction");
  608. export var isByteArray = isTypeOf("ByteArray");
  609. export var isFunc = isTypeOf("Func");
  610. export var isNode = function isNode(node) {
  611. return isModule(node) || isModuleMetadata(node) || isModuleNameMetadata(node) || isFunctionNameMetadata(node) || isLocalNameMetadata(node) || isBinaryModule(node) || isQuoteModule(node) || isSectionMetadata(node) || isLoopInstruction(node) || isInstr(node) || isIfInstruction(node) || isStringLiteral(node) || isNumberLiteral(node) || isLongNumberLiteral(node) || isFloatLiteral(node) || isElem(node) || isIndexInFuncSection(node) || isValtypeLiteral(node) || isTypeInstruction(node) || isStart(node) || isGlobalType(node) || isLeadingComment(node) || isBlockComment(node) || isData(node) || isGlobal(node) || isTable(node) || isMemory(node) || isFuncImportDescr(node) || isModuleImport(node) || isModuleExportDescr(node) || isModuleExport(node) || isLimit(node) || isSignature(node) || isProgram(node) || isIdentifier(node) || isBlockInstruction(node) || isCallInstruction(node) || isCallIndirectInstruction(node) || isByteArray(node) || isFunc(node);
  612. };
  613. export var isBlock = function isBlock(node) {
  614. return isLoopInstruction(node) || isBlockInstruction(node) || isFunc(node);
  615. };
  616. export var isInstruction = function isInstruction(node) {
  617. return isLoopInstruction(node) || isInstr(node) || isIfInstruction(node) || isTypeInstruction(node) || isBlockInstruction(node) || isCallInstruction(node) || isCallIndirectInstruction(node);
  618. };
  619. export var isExpression = function isExpression(node) {
  620. return isInstr(node) || isStringLiteral(node) || isNumberLiteral(node) || isLongNumberLiteral(node) || isFloatLiteral(node) || isValtypeLiteral(node) || isIdentifier(node);
  621. };
  622. export var isNumericLiteral = function isNumericLiteral(node) {
  623. return isNumberLiteral(node) || isLongNumberLiteral(node) || isFloatLiteral(node);
  624. };
  625. export var isImportDescr = function isImportDescr(node) {
  626. return isGlobalType(node) || isTable(node) || isMemory(node) || isFuncImportDescr(node);
  627. };
  628. export var assertModule = assertTypeOf("Module");
  629. export var assertModuleMetadata = assertTypeOf("ModuleMetadata");
  630. export var assertModuleNameMetadata = assertTypeOf("ModuleNameMetadata");
  631. export var assertFunctionNameMetadata = assertTypeOf("FunctionNameMetadata");
  632. export var assertLocalNameMetadata = assertTypeOf("LocalNameMetadata");
  633. export var assertBinaryModule = assertTypeOf("BinaryModule");
  634. export var assertQuoteModule = assertTypeOf("QuoteModule");
  635. export var assertSectionMetadata = assertTypeOf("SectionMetadata");
  636. export var assertLoopInstruction = assertTypeOf("LoopInstruction");
  637. export var assertInstr = assertTypeOf("Instr");
  638. export var assertIfInstruction = assertTypeOf("IfInstruction");
  639. export var assertStringLiteral = assertTypeOf("StringLiteral");
  640. export var assertNumberLiteral = assertTypeOf("NumberLiteral");
  641. export var assertLongNumberLiteral = assertTypeOf("LongNumberLiteral");
  642. export var assertFloatLiteral = assertTypeOf("FloatLiteral");
  643. export var assertElem = assertTypeOf("Elem");
  644. export var assertIndexInFuncSection = assertTypeOf("IndexInFuncSection");
  645. export var assertValtypeLiteral = assertTypeOf("ValtypeLiteral");
  646. export var assertTypeInstruction = assertTypeOf("TypeInstruction");
  647. export var assertStart = assertTypeOf("Start");
  648. export var assertGlobalType = assertTypeOf("GlobalType");
  649. export var assertLeadingComment = assertTypeOf("LeadingComment");
  650. export var assertBlockComment = assertTypeOf("BlockComment");
  651. export var assertData = assertTypeOf("Data");
  652. export var assertGlobal = assertTypeOf("Global");
  653. export var assertTable = assertTypeOf("Table");
  654. export var assertMemory = assertTypeOf("Memory");
  655. export var assertFuncImportDescr = assertTypeOf("FuncImportDescr");
  656. export var assertModuleImport = assertTypeOf("ModuleImport");
  657. export var assertModuleExportDescr = assertTypeOf("ModuleExportDescr");
  658. export var assertModuleExport = assertTypeOf("ModuleExport");
  659. export var assertLimit = assertTypeOf("Limit");
  660. export var assertSignature = assertTypeOf("Signature");
  661. export var assertProgram = assertTypeOf("Program");
  662. export var assertIdentifier = assertTypeOf("Identifier");
  663. export var assertBlockInstruction = assertTypeOf("BlockInstruction");
  664. export var assertCallInstruction = assertTypeOf("CallInstruction");
  665. export var assertCallIndirectInstruction = assertTypeOf("CallIndirectInstruction");
  666. export var assertByteArray = assertTypeOf("ByteArray");
  667. export var assertFunc = assertTypeOf("Func");
  668. export var unionTypesMap = {
  669. Module: ["Node"],
  670. ModuleMetadata: ["Node"],
  671. ModuleNameMetadata: ["Node"],
  672. FunctionNameMetadata: ["Node"],
  673. LocalNameMetadata: ["Node"],
  674. BinaryModule: ["Node"],
  675. QuoteModule: ["Node"],
  676. SectionMetadata: ["Node"],
  677. LoopInstruction: ["Node", "Block", "Instruction"],
  678. Instr: ["Node", "Expression", "Instruction"],
  679. IfInstruction: ["Node", "Instruction"],
  680. StringLiteral: ["Node", "Expression"],
  681. NumberLiteral: ["Node", "NumericLiteral", "Expression"],
  682. LongNumberLiteral: ["Node", "NumericLiteral", "Expression"],
  683. FloatLiteral: ["Node", "NumericLiteral", "Expression"],
  684. Elem: ["Node"],
  685. IndexInFuncSection: ["Node"],
  686. ValtypeLiteral: ["Node", "Expression"],
  687. TypeInstruction: ["Node", "Instruction"],
  688. Start: ["Node"],
  689. GlobalType: ["Node", "ImportDescr"],
  690. LeadingComment: ["Node"],
  691. BlockComment: ["Node"],
  692. Data: ["Node"],
  693. Global: ["Node"],
  694. Table: ["Node", "ImportDescr"],
  695. Memory: ["Node", "ImportDescr"],
  696. FuncImportDescr: ["Node", "ImportDescr"],
  697. ModuleImport: ["Node"],
  698. ModuleExportDescr: ["Node"],
  699. ModuleExport: ["Node"],
  700. Limit: ["Node"],
  701. Signature: ["Node"],
  702. Program: ["Node"],
  703. Identifier: ["Node", "Expression"],
  704. BlockInstruction: ["Node", "Block", "Instruction"],
  705. CallInstruction: ["Node", "Instruction"],
  706. CallIndirectInstruction: ["Node", "Instruction"],
  707. ByteArray: ["Node"],
  708. Func: ["Node", "Block"]
  709. };
  710. export var nodeAndUnionTypes = ["Module", "ModuleMetadata", "ModuleNameMetadata", "FunctionNameMetadata", "LocalNameMetadata", "BinaryModule", "QuoteModule", "SectionMetadata", "LoopInstruction", "Instr", "IfInstruction", "StringLiteral", "NumberLiteral", "LongNumberLiteral", "FloatLiteral", "Elem", "IndexInFuncSection", "ValtypeLiteral", "TypeInstruction", "Start", "GlobalType", "LeadingComment", "BlockComment", "Data", "Global", "Table", "Memory", "FuncImportDescr", "ModuleImport", "ModuleExportDescr", "ModuleExport", "Limit", "Signature", "Program", "Identifier", "BlockInstruction", "CallInstruction", "CallIndirectInstruction", "ByteArray", "Func", "Node", "Block", "Instruction", "Expression", "NumericLiteral", "ImportDescr"];