greybel-interpreter 5.4.0 → 5.5.0

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.
@@ -10,7 +10,7 @@ export declare class BytecodeExpressionGenerator implements IBytecodeExpressionG
10
10
  constructor(context: Context, parseCodeFunction: ParseCodeFunction, stmtGenerator: IBytecodeStatementGenerator);
11
11
  process(node: ASTBase, context?: LineContext): Promise<void>;
12
12
  processMemberExpression(node: ASTMemberExpression, context?: LineCallableContext): Promise<void>;
13
- processIndexExpression(node: ASTIndexExpression): Promise<void>;
13
+ processIndexExpression(node: ASTIndexExpression, context?: LineCallableContext): Promise<void>;
14
14
  processSliceExpression(node: ASTSliceExpression): Promise<void>;
15
15
  processIdentifier(node: ASTIdentifier, context?: LineIdentifierContext): Promise<void>;
16
16
  processLiteral(node: ASTLiteral): Promise<void>;
@@ -33,13 +33,13 @@ class BytecodeExpressionGenerator {
33
33
  yield this.processMemberExpression(node, context);
34
34
  return;
35
35
  case miniscript_core_1.ASTType.IndexExpression:
36
- yield this.processIndexExpression(node);
36
+ yield this.processIndexExpression(node, context);
37
37
  return;
38
38
  case miniscript_core_1.ASTType.SliceExpression:
39
39
  yield this.processSliceExpression(node);
40
40
  return;
41
41
  case miniscript_core_1.ASTType.Identifier:
42
- yield this.processIdentifier(node);
42
+ yield this.processIdentifier(node, context);
43
43
  return;
44
44
  case miniscript_core_1.ASTType.BooleanLiteral:
45
45
  case miniscript_core_1.ASTType.StringLiteral:
@@ -66,7 +66,7 @@ class BytecodeExpressionGenerator {
66
66
  yield this.processFunctionDeclaration(node, context);
67
67
  return;
68
68
  case miniscript_core_1.ASTType.ParenthesisExpression:
69
- yield this.process(node.expression);
69
+ yield this.process(node.expression, context);
70
70
  return;
71
71
  case miniscript_core_1.ASTType.BinaryNegatedExpression:
72
72
  case miniscript_core_1.ASTType.UnaryExpression:
@@ -137,7 +137,7 @@ class BytecodeExpressionGenerator {
137
137
  }
138
138
  });
139
139
  }
140
- processIndexExpression(node) {
140
+ processIndexExpression(node, context) {
141
141
  return __awaiter(this, void 0, void 0, function* () {
142
142
  const base = (0, utils_1.unwrap)(node.base);
143
143
  if (base instanceof miniscript_core_1.ASTIdentifier && base.name === keywords_1.RuntimeKeyword.Super) {
@@ -152,7 +152,7 @@ class BytecodeExpressionGenerator {
152
152
  yield this.process(node.index);
153
153
  this.context.pushCode({
154
154
  op: instruction_1.OpCode.GET_PROPERTY,
155
- invoke: false
155
+ invoke: node.isStatementStart && !(context === null || context === void 0 ? void 0 : context.isReference)
156
156
  }, node.index, node.type);
157
157
  }
158
158
  });
@@ -364,7 +364,9 @@ class BytecodeExpressionGenerator {
364
364
  switch (node.operator) {
365
365
  case miniscript_core_1.Operator.Reference:
366
366
  if (arg instanceof miniscript_core_1.ASTMemberExpression) {
367
- yield this.processMemberExpression(arg, { isReference: true });
367
+ yield this.processMemberExpression(arg, {
368
+ isReference: true
369
+ });
368
370
  }
369
371
  else if (arg instanceof miniscript_core_1.ASTIndexExpression) {
370
372
  yield this.processIndexExpression(arg);
@@ -376,10 +376,14 @@ class BytecodeStatementGenerator {
376
376
  switch (node.operator) {
377
377
  case miniscript_core_1.Operator.Reference:
378
378
  if (arg instanceof miniscript_core_1.ASTMemberExpression) {
379
- yield this.processMemberExpression(arg, { isReference: true });
379
+ yield this.processMemberExpression(arg, {
380
+ isReference: true
381
+ });
380
382
  }
381
383
  else if (arg instanceof miniscript_core_1.ASTIndexExpression) {
382
- yield this.processIndexExpression(arg, { isReference: true });
384
+ yield this.processIndexExpression(arg, {
385
+ isReference: true
386
+ });
383
387
  }
384
388
  else if (arg instanceof miniscript_core_1.ASTIdentifier) {
385
389
  yield this.processIdentifier(arg, {
package/dist/vm.js CHANGED
@@ -470,7 +470,8 @@ class VM {
470
470
  this.frames.push(newFrame);
471
471
  break;
472
472
  }
473
- this.pushStack(ret);
473
+ if (!instruction.command)
474
+ this.pushStack(ret);
474
475
  break;
475
476
  }
476
477
  case instruction_1.OpCode.GET_PROPERTY: {
@@ -494,7 +495,8 @@ class VM {
494
495
  this.frames.push(newFrame);
495
496
  break;
496
497
  }
497
- this.pushStack(ret.value);
498
+ if (!instruction.command)
499
+ this.pushStack(ret.value);
498
500
  break;
499
501
  }
500
502
  case instruction_1.OpCode.GET_SUPER_PROPERTY: {
@@ -518,7 +520,8 @@ class VM {
518
520
  this.frames.push(newFrame);
519
521
  break;
520
522
  }
521
- this.pushStack(ret.value);
523
+ if (!instruction.command)
524
+ this.pushStack(ret.value);
522
525
  break;
523
526
  }
524
527
  case instruction_1.OpCode.CALL_INTERNAL: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "greybel-interpreter",
3
- "version": "5.4.0",
3
+ "version": "5.5.0",
4
4
  "description": "Interpreter",
5
5
  "main": "dist/index",
6
6
  "typings": "dist/index",
@@ -50,7 +50,7 @@
50
50
  "typescript": "^5.0.4"
51
51
  },
52
52
  "dependencies": {
53
- "greybel-core": "~2.4.0",
53
+ "greybel-core": "~2.5.0",
54
54
  "hyperid": "^3.2.0",
55
55
  "imurmurhash": "^0.1.4",
56
56
  "non-blocking-schedule": "^0.2.0"