@abaplint/transpiler 2.10.67 → 2.10.69

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.
@@ -2,13 +2,17 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TargetTranspiler = void 0;
4
4
  const core_1 = require("@abaplint/core");
5
+ const abaplint = require("@abaplint/core");
5
6
  const traversal_1 = require("../traversal");
6
7
  const _1 = require(".");
7
8
  const chunk_1 = require("../chunk");
9
+ const feature_flags_1 = require("../feature_flags");
8
10
  class TargetTranspiler {
9
11
  transpile(node, traversal) {
10
12
  const offset = [];
11
13
  let ret = new chunk_1.Chunk();
14
+ let context = undefined;
15
+ const scope = traversal.findCurrentScopeByToken(node.getFirstToken());
12
16
  const children = node.getChildren();
13
17
  for (let i = 0; i < children.length; i++) {
14
18
  const c = children[i];
@@ -16,6 +20,7 @@ class TargetTranspiler {
16
20
  if (c.get() instanceof core_1.Expressions.TargetField) {
17
21
  const prefix = traversal.prefixAndName(c.getFirstToken()).replace("~", "$");
18
22
  ret.append(traversal_1.Traversal.prefixVariable(traversal_1.Traversal.escapeNamespace(prefix)), c, traversal);
23
+ context = scope?.findVariable(c.getFirstToken().getStr())?.getType();
19
24
  }
20
25
  else if (c.get() instanceof core_1.Expressions.ClassName) {
21
26
  const name = traversal.lookupClassOrInterface(c.getFirstToken().getStr(), c.getFirstToken());
@@ -31,8 +36,17 @@ class TargetTranspiler {
31
36
  }
32
37
  }
33
38
  else if (c.get() instanceof core_1.Expressions.AttributeName) {
39
+ let prefix = "";
40
+ if (context instanceof abaplint.BasicTypes.ObjectReferenceType) {
41
+ const cdef = traversal.findClassDefinition(context.getIdentifierName(), scope);
42
+ const attr = cdef?.getAttributes().findByName(c.getFirstToken().getStr());
43
+ if (feature_flags_1.FEATURE_FLAGS.PRIVATE_ATTRIBUTES === true
44
+ && attr?.getVisibility() === abaplint.Visibility.Private) {
45
+ prefix = "#";
46
+ }
47
+ }
34
48
  const intf = traversal_1.Traversal.escapeNamespace(traversal.isInterfaceAttribute(c.getFirstToken()));
35
- let name = traversal_1.Traversal.escapeNamespace(c.getFirstToken().getStr()).replace("~", "$").toLowerCase();
49
+ let name = prefix + traversal_1.Traversal.escapeNamespace(c.getFirstToken().getStr()).replace("~", "$").toLowerCase();
36
50
  if (intf && name.startsWith(intf) === false) {
37
51
  name = intf + "$" + name;
38
52
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/transpiler",
3
- "version": "2.10.67",
3
+ "version": "2.10.69",
4
4
  "description": "Transpiler",
5
5
  "main": "build/src/index.js",
6
6
  "typings": "build/src/index.d.ts",