@abaplint/transpiler-cli 2.10.67 → 2.10.70

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 (2) hide show
  1. package/build/bundle.js +30 -2
  2. package/package.json +2 -2
package/build/bundle.js CHANGED
@@ -78755,10 +78755,12 @@ exports.DatabaseTableTranspiler = DatabaseTableTranspiler;
78755
78755
  Object.defineProperty(exports, "__esModule", ({ value: true }));
78756
78756
  exports.FieldChainTranspiler = void 0;
78757
78757
  const core_1 = __webpack_require__(/*! @abaplint/core */ "./node_modules/@abaplint/core/build/src/index.js");
78758
+ const abaplint = __webpack_require__(/*! @abaplint/core */ "./node_modules/@abaplint/core/build/src/index.js");
78758
78759
  const _1 = __webpack_require__(/*! . */ "./node_modules/@abaplint/transpiler/build/src/expressions/index.js");
78759
78760
  const traversal_1 = __webpack_require__(/*! ../traversal */ "./node_modules/@abaplint/transpiler/build/src/traversal.js");
78760
78761
  const field_symbol_1 = __webpack_require__(/*! ./field_symbol */ "./node_modules/@abaplint/transpiler/build/src/expressions/field_symbol.js");
78761
78762
  const chunk_1 = __webpack_require__(/*! ../chunk */ "./node_modules/@abaplint/transpiler/build/src/chunk.js");
78763
+ const feature_flags_1 = __webpack_require__(/*! ../feature_flags */ "./node_modules/@abaplint/transpiler/build/src/feature_flags.js");
78762
78764
  class FieldChainTranspiler {
78763
78765
  constructor(addGet = false) {
78764
78766
  this.addGet = addGet;
@@ -78767,11 +78769,14 @@ class FieldChainTranspiler {
78767
78769
  const ret = new chunk_1.Chunk();
78768
78770
  const extra = [];
78769
78771
  let interfaceNameAdded = false;
78772
+ let context = undefined;
78773
+ const scope = traversal.findCurrentScopeByToken(node.getFirstToken());
78770
78774
  for (const c of node.getChildren()) {
78771
78775
  if (c.get() instanceof core_1.Expressions.SourceField
78772
78776
  || c.get() instanceof core_1.Expressions.Field) {
78773
78777
  const name = traversal.prefixAndName(c.getFirstToken(), filename).replace("~", "$");
78774
78778
  ret.append(traversal_1.Traversal.prefixVariable(traversal_1.Traversal.escapeNamespace(name)), c, traversal);
78779
+ context = scope?.findVariable(c.getFirstToken().getStr())?.getType();
78775
78780
  }
78776
78781
  else if (c instanceof core_1.Nodes.ExpressionNode && c.get() instanceof core_1.Expressions.SourceFieldSymbol) {
78777
78782
  ret.appendChunk(new field_symbol_1.FieldSymbolTranspiler().transpile(c, traversal));
@@ -78785,8 +78790,17 @@ class FieldChainTranspiler {
78785
78790
  }
78786
78791
  }
78787
78792
  else if (c.get() instanceof core_1.Expressions.AttributeName) {
78793
+ let pprefix = "";
78794
+ if (context instanceof abaplint.BasicTypes.ObjectReferenceType) {
78795
+ const cdef = traversal.findClassDefinition(context.getIdentifierName(), scope);
78796
+ const attr = cdef?.getAttributes().findByName(c.getFirstToken().getStr());
78797
+ if (feature_flags_1.FEATURE_FLAGS.PRIVATE_ATTRIBUTES === true
78798
+ && attr?.getVisibility() === abaplint.Visibility.Private) {
78799
+ pprefix = "#";
78800
+ }
78801
+ }
78788
78802
  const interfaceName = traversal.isInterfaceAttribute(c.getFirstToken());
78789
- let name = c.getFirstToken().getStr().toLowerCase();
78803
+ let name = pprefix + c.getFirstToken().getStr().toLowerCase();
78790
78804
  if (prefix && interfaceName && name.startsWith(interfaceName) === false && interfaceNameAdded === false) {
78791
78805
  name = traversal_1.Traversal.escapeNamespace(name).replace("~", "$");
78792
78806
  name = traversal_1.Traversal.escapeNamespace(interfaceName) + "$" + name;
@@ -80732,13 +80746,17 @@ exports.StringTemplateSourceTranspiler = StringTemplateSourceTranspiler;
80732
80746
  Object.defineProperty(exports, "__esModule", ({ value: true }));
80733
80747
  exports.TargetTranspiler = void 0;
80734
80748
  const core_1 = __webpack_require__(/*! @abaplint/core */ "./node_modules/@abaplint/core/build/src/index.js");
80749
+ const abaplint = __webpack_require__(/*! @abaplint/core */ "./node_modules/@abaplint/core/build/src/index.js");
80735
80750
  const traversal_1 = __webpack_require__(/*! ../traversal */ "./node_modules/@abaplint/transpiler/build/src/traversal.js");
80736
80751
  const _1 = __webpack_require__(/*! . */ "./node_modules/@abaplint/transpiler/build/src/expressions/index.js");
80737
80752
  const chunk_1 = __webpack_require__(/*! ../chunk */ "./node_modules/@abaplint/transpiler/build/src/chunk.js");
80753
+ const feature_flags_1 = __webpack_require__(/*! ../feature_flags */ "./node_modules/@abaplint/transpiler/build/src/feature_flags.js");
80738
80754
  class TargetTranspiler {
80739
80755
  transpile(node, traversal) {
80740
80756
  const offset = [];
80741
80757
  let ret = new chunk_1.Chunk();
80758
+ let context = undefined;
80759
+ const scope = traversal.findCurrentScopeByToken(node.getFirstToken());
80742
80760
  const children = node.getChildren();
80743
80761
  for (let i = 0; i < children.length; i++) {
80744
80762
  const c = children[i];
@@ -80746,6 +80764,7 @@ class TargetTranspiler {
80746
80764
  if (c.get() instanceof core_1.Expressions.TargetField) {
80747
80765
  const prefix = traversal.prefixAndName(c.getFirstToken()).replace("~", "$");
80748
80766
  ret.append(traversal_1.Traversal.prefixVariable(traversal_1.Traversal.escapeNamespace(prefix)), c, traversal);
80767
+ context = scope?.findVariable(c.getFirstToken().getStr())?.getType();
80749
80768
  }
80750
80769
  else if (c.get() instanceof core_1.Expressions.ClassName) {
80751
80770
  const name = traversal.lookupClassOrInterface(c.getFirstToken().getStr(), c.getFirstToken());
@@ -80761,8 +80780,17 @@ class TargetTranspiler {
80761
80780
  }
80762
80781
  }
80763
80782
  else if (c.get() instanceof core_1.Expressions.AttributeName) {
80783
+ let prefix = "";
80784
+ if (context instanceof abaplint.BasicTypes.ObjectReferenceType) {
80785
+ const cdef = traversal.findClassDefinition(context.getIdentifierName(), scope);
80786
+ const attr = cdef?.getAttributes().findByName(c.getFirstToken().getStr());
80787
+ if (feature_flags_1.FEATURE_FLAGS.PRIVATE_ATTRIBUTES === true
80788
+ && attr?.getVisibility() === abaplint.Visibility.Private) {
80789
+ prefix = "#";
80790
+ }
80791
+ }
80764
80792
  const intf = traversal_1.Traversal.escapeNamespace(traversal.isInterfaceAttribute(c.getFirstToken()));
80765
- let name = traversal_1.Traversal.escapeNamespace(c.getFirstToken().getStr()).replace("~", "$").toLowerCase();
80793
+ let name = prefix + traversal_1.Traversal.escapeNamespace(c.getFirstToken().getStr()).replace("~", "$").toLowerCase();
80766
80794
  if (intf && name.startsWith(intf) === false) {
80767
80795
  name = intf + "$" + name;
80768
80796
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/transpiler-cli",
3
- "version": "2.10.67",
3
+ "version": "2.10.70",
4
4
  "description": "Transpiler - Command Line Interface",
5
5
  "funding": "https://github.com/sponsors/larshp",
6
6
  "bin": {
@@ -28,7 +28,7 @@
28
28
  "license": "MIT",
29
29
  "devDependencies": {
30
30
  "@abaplint/core": "^2.113.149",
31
- "@abaplint/transpiler": "^2.10.67",
31
+ "@abaplint/transpiler": "^2.10.70",
32
32
  "@types/glob": "^8.1.0",
33
33
  "@types/node": "^22.16.5",
34
34
  "@types/progress": "^2.0.7",