@abaplint/transpiler 2.2.16 → 2.2.18

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.
@@ -42,6 +42,9 @@ class MethodSourceTranspiler {
42
42
  const second = child.getChildren()[1];
43
43
  const lookupException = traversal.lookupClassOrInterface("'CX_SY_DYN_CALL_ILLEGAL_METHOD'", child.getFirstToken(), true);
44
44
  if (second.get() instanceof core_1.Expressions.FieldChain) {
45
+ if (call.endsWith(".")) {
46
+ call = call.substring(0, call.length - 1);
47
+ }
45
48
  call += "[";
46
49
  call += traversal.traverse(second).getCode();
47
50
  call += ".get().toLowerCase()]";
@@ -65,6 +65,9 @@ class MethodImplementationTranspiler {
65
65
  else if (parameterDefault.getFirstToken().getStr().toLowerCase() === "space") {
66
66
  val = "abap.builtin.space";
67
67
  }
68
+ else if (parameterDefault.concatTokens().toLowerCase() === "sy-uname") {
69
+ val = "abap.builtin.sy.get().uname";
70
+ }
68
71
  else {
69
72
  // note: this can be difficult, the "def" might be from an interface, ie. a different scope than the method
70
73
  val = new expressions_1.FieldChainTranspiler().transpile(parameterDefault, traversal, true, methodDef === null || methodDef === void 0 ? void 0 : methodDef.getFilename()).getCode();
@@ -3,5 +3,5 @@ import { IStatementTranspiler } from "./_statement_transpiler";
3
3
  import { Traversal } from "../traversal";
4
4
  import { Chunk } from "../chunk";
5
5
  export declare class OverlayTranspiler implements IStatementTranspiler {
6
- transpile(_node: abaplint.Nodes.StatementNode, _traversal: Traversal): Chunk;
6
+ transpile(node: abaplint.Nodes.StatementNode, traversal: Traversal): Chunk;
7
7
  }
@@ -1,10 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.OverlayTranspiler = void 0;
4
+ const abaplint = require("@abaplint/core");
4
5
  const chunk_1 = require("../chunk");
5
6
  class OverlayTranspiler {
6
- transpile(_node, _traversal) {
7
- return new chunk_1.Chunk(`throw new Error("Overlay, transpiler todo");`);
7
+ transpile(node, traversal) {
8
+ const ret = new chunk_1.Chunk().append("abap.statements.overlay(", node, traversal);
9
+ ret.appendChunk(traversal.traverse(node.findDirectExpression(abaplint.Expressions.Target)));
10
+ for (const s of node.findDirectExpressions(abaplint.Expressions.Source)) {
11
+ ret.appendString(",");
12
+ ret.appendChunk(traversal.traverse(s));
13
+ }
14
+ ret.append(");", node.getLastToken(), traversal);
15
+ return ret;
8
16
  }
9
17
  }
10
18
  exports.OverlayTranspiler = OverlayTranspiler;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/transpiler",
3
- "version": "2.2.16",
3
+ "version": "2.2.18",
4
4
  "description": "Transpiler",
5
5
  "main": "build/src/index.js",
6
6
  "typings": "build/src/index.d.ts",