@futpib/parser 1.0.3 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) hide show
  1. package/.claude/settings.local.json +24 -0
  2. package/.github/workflows/main.yml +1 -0
  3. package/build/androidPackageParser.js +30 -32
  4. package/build/arbitraryDalvikBytecode.d.ts +3 -3
  5. package/build/arbitraryDalvikBytecode.js +33 -27
  6. package/build/arbitraryDalvikExecutable.js +55 -17
  7. package/build/arbitraryJava.d.ts +31 -0
  8. package/build/arbitraryJava.js +532 -0
  9. package/build/arbitraryJavaScript.d.ts +3 -0
  10. package/build/arbitraryJavaScript.js +263 -0
  11. package/build/arbitraryJavascript.d.ts +3 -0
  12. package/build/arbitraryJavascript.js +263 -0
  13. package/build/arbitraryZig.d.ts +3 -0
  14. package/build/arbitraryZig.js +240 -0
  15. package/build/arbitraryZipStream.d.ts +1 -1
  16. package/build/arrayParser.js +72 -13
  17. package/build/backsmali.d.ts +4 -3
  18. package/build/backsmali.js +26 -6
  19. package/build/bash.d.ts +89 -0
  20. package/build/bash.js +1 -0
  21. package/build/bashParser.d.ts +6 -0
  22. package/build/bashParser.js +335 -0
  23. package/build/bashParser.test.d.ts +1 -0
  24. package/build/bashParser.test.js +343 -0
  25. package/build/bashParserEdgeCases.test.d.ts +1 -0
  26. package/build/bashParserEdgeCases.test.js +117 -0
  27. package/build/dalvikBytecodeParser/addressConversion.d.ts +110 -0
  28. package/build/dalvikBytecodeParser/addressConversion.js +334 -0
  29. package/build/dalvikBytecodeParser/formatParsers.d.ts +7 -6
  30. package/build/dalvikBytecodeParser/formatParsers.js +13 -14
  31. package/build/dalvikBytecodeParser.d.ts +60 -31
  32. package/build/dalvikBytecodeParser.js +92 -35
  33. package/build/dalvikBytecodeParser.test-d.d.ts +1 -0
  34. package/build/dalvikBytecodeParser.test-d.js +268 -0
  35. package/build/dalvikBytecodeUnparser/formatUnparsers.d.ts +9 -8
  36. package/build/dalvikBytecodeUnparser/formatUnparsers.js +13 -12
  37. package/build/dalvikBytecodeUnparser.d.ts +2 -2
  38. package/build/dalvikBytecodeUnparser.js +23 -23
  39. package/build/dalvikBytecodeUnparser.test.js +7 -7
  40. package/build/dalvikExecutable.d.ts +3 -3
  41. package/build/dalvikExecutable.test-d.d.ts +1 -0
  42. package/build/dalvikExecutable.test-d.js +59 -0
  43. package/build/dalvikExecutableParser/typedNumbers.d.ts +18 -0
  44. package/build/dalvikExecutableParser/typedNumbers.js +3 -0
  45. package/build/dalvikExecutableParser.d.ts +2 -1
  46. package/build/dalvikExecutableParser.js +96 -77
  47. package/build/dalvikExecutableParser.test.js +24 -3
  48. package/build/dalvikExecutableParserAgainstSmaliParser.test.js +3 -0
  49. package/build/dalvikExecutableUnparser/poolScanners.d.ts +2 -2
  50. package/build/dalvikExecutableUnparser/sectionUnparsers.d.ts +3 -3
  51. package/build/dalvikExecutableUnparser/sectionUnparsers.js +26 -11
  52. package/build/dalvikExecutableUnparser.d.ts +2 -2
  53. package/build/dalvikExecutableUnparser.test.js +2 -1
  54. package/build/disjunctionParser.d.ts +5 -3
  55. package/build/disjunctionParser.js +79 -17
  56. package/build/disjunctionParser.test-d.d.ts +1 -0
  57. package/build/disjunctionParser.test-d.js +72 -0
  58. package/build/elementSwitchParser.d.ts +4 -0
  59. package/build/{exactElementSwitchParser.js → elementSwitchParser.js} +3 -4
  60. package/build/elementSwitchParser.test-d.d.ts +1 -0
  61. package/build/elementSwitchParser.test-d.js +44 -0
  62. package/build/exactSequenceParser.d.ts +4 -2
  63. package/build/exactSequenceParser.test-d.d.ts +1 -0
  64. package/build/exactSequenceParser.test-d.js +36 -0
  65. package/build/fetchCid.js +2 -66
  66. package/build/index.d.ts +25 -2
  67. package/build/index.js +23 -1
  68. package/build/index.test.js +16 -1
  69. package/build/inputReader.d.ts +10 -0
  70. package/build/inputReader.js +36 -0
  71. package/build/java.d.ts +502 -0
  72. package/build/java.js +2 -0
  73. package/build/javaKeyStoreParser.js +14 -17
  74. package/build/javaParser.d.ts +51 -0
  75. package/build/javaParser.js +1538 -0
  76. package/build/javaParser.test.d.ts +1 -0
  77. package/build/javaParser.test.js +1287 -0
  78. package/build/javaScript.d.ts +35 -0
  79. package/build/javaScript.js +1 -0
  80. package/build/javaScriptParser.d.ts +9 -0
  81. package/build/javaScriptParser.js +34 -0
  82. package/build/javaScriptUnparser.d.ts +3 -0
  83. package/build/javaScriptUnparser.js +4 -0
  84. package/build/javaScriptUnparser.test.d.ts +1 -0
  85. package/build/javaScriptUnparser.test.js +24 -0
  86. package/build/javaUnparser.d.ts +2 -0
  87. package/build/javaUnparser.js +519 -0
  88. package/build/javaUnparser.test.d.ts +1 -0
  89. package/build/javaUnparser.test.js +24 -0
  90. package/build/javascript.d.ts +35 -0
  91. package/build/javascript.js +1 -0
  92. package/build/javascriptParser.d.ts +9 -0
  93. package/build/javascriptParser.js +34 -0
  94. package/build/javascriptUnparser.d.ts +3 -0
  95. package/build/javascriptUnparser.js +4 -0
  96. package/build/javascriptUnparser.test.d.ts +1 -0
  97. package/build/javascriptUnparser.test.js +24 -0
  98. package/build/jsonParser.js +2 -12
  99. package/build/lazyMessageError.d.ts +3 -0
  100. package/build/lookaheadParser.js +60 -3
  101. package/build/negativeLookaheadParser.js +70 -11
  102. package/build/nonEmptyArrayParser.js +72 -13
  103. package/build/objectParser.d.ts +12 -0
  104. package/build/objectParser.js +31 -0
  105. package/build/objectParser.test-d.d.ts +1 -0
  106. package/build/objectParser.test-d.js +112 -0
  107. package/build/objectParser.test.d.ts +1 -0
  108. package/build/objectParser.test.js +55 -0
  109. package/build/optionalParser.js +69 -10
  110. package/build/parser.d.ts +4 -0
  111. package/build/parser.js +3 -1
  112. package/build/parser.test.js +114 -1
  113. package/build/parserConsumedSequenceParser.js +66 -7
  114. package/build/parserContext.d.ts +6 -0
  115. package/build/parserContext.js +20 -11
  116. package/build/parserError.d.ts +119 -27
  117. package/build/parserError.js +16 -8
  118. package/build/regexpParser.d.ts +2 -0
  119. package/build/regexpParser.js +101 -0
  120. package/build/regexpParser.test.d.ts +1 -0
  121. package/build/regexpParser.test.js +114 -0
  122. package/build/regularExpression.d.ts +63 -0
  123. package/build/regularExpression.js +1 -0
  124. package/build/regularExpressionParser.d.ts +3 -0
  125. package/build/regularExpressionParser.js +600 -0
  126. package/build/regularExpressionParser.test.d.ts +1 -0
  127. package/build/regularExpressionParser.test.js +89 -0
  128. package/build/separatedArrayParser.js +73 -14
  129. package/build/separatedNonEmptyArrayParser.js +73 -14
  130. package/build/sliceBoundedParser.js +62 -5
  131. package/build/smaliParser.d.ts +7 -7
  132. package/build/smaliParser.js +185 -268
  133. package/build/smaliParser.test.js +58 -0
  134. package/build/stringEscapes.d.ts +5 -0
  135. package/build/stringEscapes.js +244 -0
  136. package/build/symbolicExpression.d.ts +29 -0
  137. package/build/symbolicExpression.js +1 -0
  138. package/build/symbolicExpressionParser.d.ts +4 -0
  139. package/build/symbolicExpressionParser.js +123 -0
  140. package/build/symbolicExpressionParser.test.d.ts +1 -0
  141. package/build/symbolicExpressionParser.test.js +289 -0
  142. package/build/terminatedArrayParser.js +113 -38
  143. package/build/terminatedArrayParser.test.js +4 -2
  144. package/build/tupleParser.d.ts +7 -15
  145. package/build/tupleParser.js +1 -0
  146. package/build/unionParser.d.ts +5 -3
  147. package/build/unionParser.js +7 -2
  148. package/build/unionParser.test-d.d.ts +1 -0
  149. package/build/unionParser.test-d.js +72 -0
  150. package/build/unionParser.test.js +10 -11
  151. package/build/zig.d.ts +280 -0
  152. package/build/zig.js +2 -0
  153. package/build/zigParser.d.ts +3 -0
  154. package/build/zigParser.js +1119 -0
  155. package/build/zigParser.test.d.ts +1 -0
  156. package/build/zigParser.test.js +1590 -0
  157. package/build/zigUnparser.d.ts +2 -0
  158. package/build/zigUnparser.js +460 -0
  159. package/build/zigUnparser.test.d.ts +1 -0
  160. package/build/zigUnparser.test.js +24 -0
  161. package/build/zipParser.js +19 -32
  162. package/build/zipUnparser.js +19 -7
  163. package/build/zipUnparser.test.js +1 -1
  164. package/node_modules-@types/s-expression/index.d.ts +5 -0
  165. package/package.json +25 -6
  166. package/src/androidPackageParser.ts +33 -60
  167. package/src/arbitraryDalvikBytecode.ts +39 -31
  168. package/src/arbitraryDalvikExecutable.ts +65 -20
  169. package/src/arbitraryJava.ts +804 -0
  170. package/src/arbitraryJavaScript.ts +410 -0
  171. package/src/arbitraryZig.ts +380 -0
  172. package/src/arrayParser.ts +1 -3
  173. package/src/backsmali.ts +35 -4
  174. package/src/bash.ts +127 -0
  175. package/src/bashParser.test.ts +590 -0
  176. package/src/bashParser.ts +498 -0
  177. package/src/dalvikBytecodeParser/addressConversion.ts +496 -0
  178. package/src/dalvikBytecodeParser/formatParsers.ts +19 -29
  179. package/src/dalvikBytecodeParser.test-d.ts +310 -0
  180. package/src/dalvikBytecodeParser.ts +194 -69
  181. package/src/dalvikBytecodeUnparser/formatUnparsers.ts +27 -26
  182. package/src/dalvikBytecodeUnparser.test.ts +7 -7
  183. package/src/dalvikBytecodeUnparser.ts +31 -30
  184. package/src/dalvikExecutable.test-d.ts +132 -0
  185. package/src/dalvikExecutable.ts +3 -3
  186. package/src/dalvikExecutableParser/typedNumbers.ts +11 -0
  187. package/src/dalvikExecutableParser.test.ts +37 -3
  188. package/src/dalvikExecutableParser.test.ts.md +163 -2
  189. package/src/dalvikExecutableParser.test.ts.snap +0 -0
  190. package/src/dalvikExecutableParser.ts +121 -139
  191. package/src/dalvikExecutableParserAgainstSmaliParser.test.ts +4 -0
  192. package/src/dalvikExecutableUnparser/poolScanners.ts +6 -6
  193. package/src/dalvikExecutableUnparser/sectionUnparsers.ts +38 -14
  194. package/src/dalvikExecutableUnparser.test.ts +3 -2
  195. package/src/dalvikExecutableUnparser.ts +4 -4
  196. package/src/disjunctionParser.test-d.ts +105 -0
  197. package/src/disjunctionParser.ts +18 -15
  198. package/src/elementSwitchParser.test-d.ts +74 -0
  199. package/src/elementSwitchParser.ts +51 -0
  200. package/src/exactSequenceParser.test-d.ts +43 -0
  201. package/src/exactSequenceParser.ts +13 -8
  202. package/src/fetchCid.ts +2 -76
  203. package/src/index.test.ts +22 -1
  204. package/src/index.ts +119 -2
  205. package/src/inputReader.ts +53 -0
  206. package/src/java.ts +708 -0
  207. package/src/javaKeyStoreParser.ts +18 -32
  208. package/src/javaParser.test.ts +1592 -0
  209. package/src/javaParser.ts +2640 -0
  210. package/src/javaScript.ts +36 -0
  211. package/src/javaScriptParser.ts +57 -0
  212. package/src/javaScriptUnparser.test.ts +37 -0
  213. package/src/javaScriptUnparser.ts +7 -0
  214. package/src/javaUnparser.test.ts +37 -0
  215. package/src/javaUnparser.ts +640 -0
  216. package/src/jsonParser.ts +6 -27
  217. package/src/lookaheadParser.ts +2 -6
  218. package/src/negativeLookaheadParser.ts +1 -3
  219. package/src/nonEmptyArrayParser.ts +1 -3
  220. package/src/objectParser.test-d.ts +152 -0
  221. package/src/objectParser.test.ts +71 -0
  222. package/src/objectParser.ts +69 -0
  223. package/src/optionalParser.ts +1 -3
  224. package/src/parser.test.ts +151 -4
  225. package/src/parser.ts +11 -1
  226. package/src/parserConsumedSequenceParser.ts +2 -4
  227. package/src/parserContext.ts +26 -11
  228. package/src/parserError.ts +17 -3
  229. package/src/regexpParser.test.ts +264 -0
  230. package/src/regexpParser.ts +126 -0
  231. package/src/regularExpression.ts +24 -0
  232. package/src/regularExpressionParser.test.ts +102 -0
  233. package/src/regularExpressionParser.ts +920 -0
  234. package/src/separatedArrayParser.ts +1 -3
  235. package/src/separatedNonEmptyArrayParser.ts +1 -3
  236. package/src/sliceBoundedParser.test.ts +2 -2
  237. package/src/sliceBoundedParser.ts +15 -19
  238. package/src/smaliParser.test.ts +64 -0
  239. package/src/smaliParser.test.ts.md +12 -12
  240. package/src/smaliParser.test.ts.snap +0 -0
  241. package/src/smaliParser.ts +246 -534
  242. package/src/stringEscapes.ts +253 -0
  243. package/src/symbolicExpression.ts +17 -0
  244. package/src/symbolicExpressionParser.test.ts +466 -0
  245. package/src/symbolicExpressionParser.ts +190 -0
  246. package/src/terminatedArrayParser.test.ts +9 -6
  247. package/src/terminatedArrayParser.ts +25 -29
  248. package/src/tupleParser.ts +21 -18
  249. package/src/unionParser.test-d.ts +105 -0
  250. package/src/unionParser.test.ts +18 -17
  251. package/src/unionParser.ts +28 -16
  252. package/src/zig.ts +411 -0
  253. package/src/zigParser.test.ts +1693 -0
  254. package/src/zigParser.ts +1745 -0
  255. package/src/zigUnparser.test.ts +37 -0
  256. package/src/zigUnparser.ts +615 -0
  257. package/src/zipParser.ts +20 -56
  258. package/src/zipUnparser.test.ts +1 -1
  259. package/src/zipUnparser.ts +22 -7
  260. package/tsconfig.json +2 -2
  261. package/build/exactElementSwitchParser.d.ts +0 -3
  262. package/src/exactElementSwitchParser.ts +0 -41
@@ -21,7 +21,7 @@ export const createSeparatedArrayParser = <ElementOutput, Sequence>(
21
21
  const elements: ElementOutput[] = [];
22
22
 
23
23
  while (true) {
24
- const elementParserContext = parserContext.lookahead();
24
+ using elementParserContext = parserContext.lookahead();
25
25
  const initialPosition = elementParserContext.position;
26
26
 
27
27
  try {
@@ -39,8 +39,6 @@ export const createSeparatedArrayParser = <ElementOutput, Sequence>(
39
39
  }
40
40
 
41
41
  throw error;
42
- } finally {
43
- elementParserContext.dispose();
44
42
  }
45
43
 
46
44
  parser = separatorThenElementParser;
@@ -21,7 +21,7 @@ export const createSeparatedNonEmptyArrayParser = <ElementOutput, Sequence>(
21
21
  const elements: ElementOutput[] = [];
22
22
 
23
23
  while (true) {
24
- const elementParserContext = parserContext.lookahead();
24
+ using elementParserContext = parserContext.lookahead();
25
25
  const initialPosition = elementParserContext.position;
26
26
 
27
27
  try {
@@ -39,8 +39,6 @@ export const createSeparatedNonEmptyArrayParser = <ElementOutput, Sequence>(
39
39
  }
40
40
 
41
41
  throw error;
42
- } finally {
43
- elementParserContext.dispose();
44
42
  }
45
43
 
46
44
  parser = separatorThenElementParser;
@@ -32,7 +32,7 @@ test('sliceBoundedParser', async t => {
32
32
  test('sliceBoundedParser mustConsumeAll: true fail to cosume all', async t => {
33
33
  const parser = createTupleParser([
34
34
  createElementParser<string>(),
35
- createSliceBoundedParser(createArrayParser(createExactElementParser('b' as string)), 2),
35
+ createSliceBoundedParser(createArrayParser(createExactElementParser<string>('b')), 2),
36
36
  createElementParser(),
37
37
  ]);
38
38
 
@@ -45,7 +45,7 @@ test('sliceBoundedParser mustConsumeAll: true fail to cosume all', async t => {
45
45
  test('sliceBoundedParser mustConsumeAll: false', async t => {
46
46
  const parser = createTupleParser([
47
47
  createElementParser<string>(),
48
- createSliceBoundedParser(createArrayParser(createExactElementParser('b' as string)), 2, false),
48
+ createSliceBoundedParser(createArrayParser(createExactElementParser<string>('b')), 2, false),
49
49
  createElementParser(),
50
50
  ]);
51
51
 
@@ -8,30 +8,26 @@ export const createSliceBoundedParser = <Output, Sequence>(
8
8
  const sliceBoundedParser: typeof childParser = async parserContext => {
9
9
  const absoluteSliceEnd = parserContext.position + sliceEnd;
10
10
 
11
- const childParserContext = parserContext.lookahead({
11
+ using childParserContext = parserContext.lookahead({
12
12
  sliceEnd: absoluteSliceEnd,
13
13
  });
14
14
 
15
- try {
16
- const value = await childParser(childParserContext);
15
+ const value = await childParser(childParserContext);
17
16
 
18
- childParserContext.invariant(
19
- (
20
- !mustConsumeAll
21
- || childParserContext.position === absoluteSliceEnd
22
- ),
23
- 'child parser must consume all input in the slice (%s in total, up to position %s), instead consumed %s up to position %s',
24
- sliceEnd,
25
- absoluteSliceEnd,
26
- childParserContext.position - parserContext.position,
27
- childParserContext.position,
28
- );
17
+ childParserContext.invariant(
18
+ (
19
+ !mustConsumeAll
20
+ || childParserContext.position === absoluteSliceEnd
21
+ ),
22
+ 'child parser must consume all input in the slice (%s in total, up to position %s), instead consumed %s up to position %s',
23
+ sliceEnd,
24
+ absoluteSliceEnd,
25
+ childParserContext.position - parserContext.position,
26
+ childParserContext.position,
27
+ );
29
28
 
30
- childParserContext.unlookahead();
31
- return value;
32
- } finally {
33
- childParserContext.dispose();
34
- }
29
+ childParserContext.unlookahead();
30
+ return value;
35
31
  };
36
32
 
37
33
  setParserName(sliceBoundedParser, [
@@ -441,3 +441,67 @@ test('parse smali with virtual method after direct methods (a0/n issue)', async
441
441
  t.truthy(actual);
442
442
  t.is(actual.classData?.virtualMethods.length, 1);
443
443
  });
444
+
445
+ // Minimal failing test case for .end local directive
446
+ test('parse smali with .end local directive', async t => {
447
+ const smali = `.class public Lpl/czak/minimal/MainActivity;
448
+ .super Landroid/app/Activity;
449
+
450
+ # direct methods
451
+ .method private sumToN(I)I
452
+ .registers 4
453
+ .param p1, "n" # I
454
+
455
+ const/4 v0, 0x0
456
+
457
+ .local v0, "sum":I
458
+ const/4 v1, 0x1
459
+
460
+ .local v1, "i":I
461
+ :goto_2
462
+ if-gt v1, p1, :cond_8
463
+
464
+ add-int/2addr v0, v1
465
+
466
+ add-int/lit8 v1, v1, 0x1
467
+
468
+ goto :goto_2
469
+
470
+ .end local v1 # "i":I
471
+ :cond_8
472
+ return v0
473
+ .end method
474
+ `;
475
+
476
+ const actual = await runParser(smaliParser, smali, stringParserInputCompanion, {
477
+ errorJoinMode: 'all',
478
+ });
479
+
480
+ t.truthy(actual);
481
+ t.is(actual.classData?.directMethods.length, 1);
482
+ });
483
+
484
+ // Minimal test case for .local with generic type signature
485
+ test('parse smali with .local directive with generic type signature', async t => {
486
+ const smali = `.class public Lpl/czak/minimal/MainActivity;
487
+ .super Landroid/app/Activity;
488
+
489
+ # direct methods
490
+ .method private useLambda()Ljava/lang/String;
491
+ .registers 3
492
+
493
+ new-instance v0, Lpl/czak/minimal/MainActivity$$ExternalSyntheticLambda0;
494
+
495
+ .local v0, "supplier":Ljava/util/function/Supplier;, "Ljava/util/function/Supplier<Ljava/lang/String;>;"
496
+
497
+ return-object v0
498
+ .end method
499
+ `;
500
+
501
+ const actual = await runParser(smaliParser, smali, stringParserInputCompanion, {
502
+ errorJoinMode: 'all',
503
+ });
504
+
505
+ t.truthy(actual);
506
+ t.is(actual.classData?.directMethods.length, 1);
507
+ });
@@ -252,11 +252,11 @@ Generated by [AVA](https://avajs.dev).
252
252
  ],
253
253
  },
254
254
  {
255
- branchOffset: 10,
256
255
  operation: 'packed-switch',
257
256
  registers: [
258
257
  0,
259
258
  ],
259
+ targetInstructionIndex: 6,
260
260
  },
261
261
  {
262
262
  field: {
@@ -300,10 +300,10 @@ Generated by [AVA](https://avajs.dev).
300
300
  ],
301
301
  },
302
302
  {
303
- branchOffsets: [
304
- 3,
305
- ],
306
303
  operation: 'packed-switch-payload',
304
+ targetInstructionIndices: [
305
+ 2,
306
+ ],
307
307
  value: 0,
308
308
  },
309
309
  ],
@@ -718,11 +718,11 @@ Generated by [AVA](https://avajs.dev).
718
718
  value: 2130903347,
719
719
  },
720
720
  {
721
- branchOffset: 17,
722
721
  operation: 'if-nez',
723
722
  registers: [
724
723
  6,
725
724
  ],
725
+ targetInstructionIndex: 10,
726
726
  },
727
727
  {
728
728
  operation: 'new-instance',
@@ -802,8 +802,8 @@ Generated by [AVA](https://avajs.dev).
802
802
  ],
803
803
  },
804
804
  {
805
- branchOffset: 2,
806
805
  operation: 'goto',
806
+ targetInstructionIndex: 11,
807
807
  },
808
808
  {
809
809
  operation: 'move',
@@ -905,11 +905,11 @@ Generated by [AVA](https://avajs.dev).
905
905
  ],
906
906
  },
907
907
  {
908
- branchOffset: 16,
909
908
  operation: 'if-nez',
910
909
  registers: [
911
910
  6,
912
911
  ],
912
+ targetInstructionIndex: 26,
913
913
  },
914
914
  {
915
915
  operation: 'new-instance',
@@ -1474,11 +1474,11 @@ Generated by [AVA](https://avajs.dev).
1474
1474
  ],
1475
1475
  },
1476
1476
  {
1477
- branchOffset: 19,
1478
1477
  operation: 'if-nez',
1479
1478
  registers: [
1480
1479
  0,
1481
1480
  ],
1481
+ targetInstructionIndex: 10,
1482
1482
  },
1483
1483
  {
1484
1484
  field: {
@@ -3423,11 +3423,11 @@ Generated by [AVA](https://avajs.dev).
3423
3423
  ],
3424
3424
  },
3425
3425
  {
3426
- branchOffset: 11,
3427
3426
  operation: 'if-nez',
3428
3427
  registers: [
3429
3428
  0,
3430
3429
  ],
3430
+ targetInstructionIndex: 10,
3431
3431
  },
3432
3432
  {
3433
3433
  method: {
@@ -3456,15 +3456,15 @@ Generated by [AVA](https://avajs.dev).
3456
3456
  ],
3457
3457
  },
3458
3458
  {
3459
- branchOffset: 3,
3460
3459
  operation: 'if-eqz',
3461
3460
  registers: [
3462
3461
  2,
3463
3462
  ],
3463
+ targetInstructionIndex: 8,
3464
3464
  },
3465
3465
  {
3466
- branchOffset: 3,
3467
3466
  operation: 'goto',
3467
+ targetInstructionIndex: 10,
3468
3468
  },
3469
3469
  {
3470
3470
  operation: 'const/4',
@@ -3474,8 +3474,8 @@ Generated by [AVA](https://avajs.dev).
3474
3474
  value: 0,
3475
3475
  },
3476
3476
  {
3477
- branchOffset: 2,
3478
3477
  operation: 'goto',
3478
+ targetInstructionIndex: 11,
3479
3479
  },
3480
3480
  {
3481
3481
  operation: 'const/4',
Binary file