@abaplint/transpiler-cli 2.11.1 → 2.11.3

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 +28 -28
  2. package/package.json +2 -2
package/build/bundle.js CHANGED
@@ -87119,23 +87119,21 @@ const expressions_1 = __webpack_require__(/*! ../expressions */ "./node_modules/
87119
87119
  class SetHandlerTranspiler {
87120
87120
  transpile(node, traversal) {
87121
87121
  const methods = [];
87122
- let className = undefined;
87122
+ let eventClass = undefined;
87123
87123
  let eventName = undefined;
87124
87124
  for (const m of node.findDirectExpressions(abaplint.Expressions.MethodSource)) {
87125
87125
  methods.push(new expressions_1.MethodSourceTranspiler().transpile(m, traversal).getCode().replace("await ", ""));
87126
- if (className === undefined) {
87126
+ if (eventClass === undefined) {
87127
87127
  const nameToken = m.getFirstToken();
87128
87128
  const scope = traversal.findCurrentScopeByToken(nameToken);
87129
87129
  const method = traversal.findMethodReference(nameToken, scope);
87130
87130
  if (method?.def.isEventHandler() !== true) {
87131
87131
  throw new Error(`SetHandlerTranspiler: Method "${nameToken.getStr()}" is not an event handler`);
87132
87132
  }
87133
- const def = traversal.findClassDefinition(method.def.getClassName(), scope);
87134
- if (def === undefined) {
87135
- throw new Error(`SetHandlerTranspiler: Class "${method.def.getClassName()}" not found`);
87136
- }
87137
87133
  eventName = method.def.getEventName();
87138
- className = this.findEventClass(def, eventName, traversal, scope);
87134
+ eventClass = this.findEventClass(method.def, traversal, scope);
87135
+ // className = method.def.getEventClass();
87136
+ // this.findEventClass(def, eventName, traversal, scope);
87139
87137
  }
87140
87138
  }
87141
87139
  let f = undefined;
@@ -87151,30 +87149,24 @@ class SetHandlerTranspiler {
87151
87149
  if (activationExpression) {
87152
87150
  activation = ", " + new expressions_1.SourceTranspiler().transpile(activationExpression, traversal).getCode();
87153
87151
  }
87154
- return new chunk_1.Chunk().append(`abap.statements.setHandler({EVENT_NAME: "${eventName}", EVENT_CLASS: "${className}"}, [${methods.join(",")}], ${f}${activation});`, node, traversal);
87152
+ return new chunk_1.Chunk().append(`abap.statements.setHandler({EVENT_NAME: "${eventName}", EVENT_CLASS: "${eventClass}"}, [${methods.join(",")}], ${f}${activation});`, node, traversal);
87155
87153
  }
87156
- findEventClass(def, eventName, traversal, scope) {
87157
- let current = def;
87158
- while (current !== undefined) {
87159
- for (const event of current.getEvents()) {
87160
- if (event.getName().toUpperCase() === eventName?.toUpperCase()) {
87161
- return traversal.buildInternalName(current.getName(), current);
87162
- }
87163
- }
87164
- for (const implementing of current.getImplementing()) {
87165
- const idef = traversal.findInterfaceDefinition(implementing.name, scope);
87166
- if (idef === undefined) {
87167
- continue;
87168
- }
87169
- for (const event of idef.getEvents()) {
87170
- if (event.getName().toUpperCase() === eventName?.toUpperCase()) {
87171
- return traversal.buildInternalName(idef.getName(), idef);
87172
- }
87173
- }
87154
+ findEventClass(mdef, traversal, scope) {
87155
+ let def = traversal.findClassDefinition(mdef.getEventClass(), scope);
87156
+ if (def === undefined) {
87157
+ def = traversal.findInterfaceDefinition(mdef.getEventClass(), scope);
87158
+ }
87159
+ // look through super classes
87160
+ while (def?.getSuperClass() !== undefined) {
87161
+ if (def.getEvents().find(e => e.getName().toUpperCase() === mdef.getEventName()?.toUpperCase())) {
87162
+ break;
87174
87163
  }
87175
- current = traversal.findClassDefinition(current.getSuperClass(), scope);
87164
+ def = traversal.findClassDefinition(def.getSuperClass(), scope);
87176
87165
  }
87177
- throw new Error(`Transpiler: Event "${eventName}" not found in class "${def.getName()}"`);
87166
+ if (def === undefined) {
87167
+ throw new Error(`SetHandlerTranspiler: findEventClass, class or interface "${mdef.getEventClass()}" not found`);
87168
+ }
87169
+ return traversal.buildInternalName(def.getName(), def);
87178
87170
  }
87179
87171
  }
87180
87172
  exports.SetHandlerTranspiler = SetHandlerTranspiler;
@@ -88447,6 +88439,14 @@ class ClassImplementationTranspiler {
88447
88439
  }
88448
88440
  ret += traversal_1.Traversal.escapeNamespace(clasName) + "." + alias.getName().toLowerCase() + " = " + traversal_1.Traversal.escapeNamespace(clasName) + "." + traversal_1.Traversal.escapeNamespace(alias.getComponent().replace("~", "$")) + ";\n";
88449
88441
  }
88442
+ for (const e of cdef.getEvents()) {
88443
+ if (e.isStatic() === false) {
88444
+ continue;
88445
+ }
88446
+ const fname = traversal_1.Traversal.escapeNamespace(e.getName().toLowerCase());
88447
+ const name = traversal.buildInternalName(clasName, cdef);
88448
+ ret += traversal_1.Traversal.escapeNamespace(clasName) + "." + fname + " = {\"EVENT_NAME\": \"" + e.getName().toUpperCase() + "\", \"EVENT_CLASS\": \"" + name + "\"};\n";
88449
+ }
88450
88450
  // this is not correct, ABAP does not invocate the class constructor at require time,
88451
88451
  // but this will probably work
88452
88452
  if (traversal.getCurrentObject().getType() === "CLAS") {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abaplint/transpiler-cli",
3
- "version": "2.11.1",
3
+ "version": "2.11.3",
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.151",
31
- "@abaplint/transpiler": "^2.11.1",
31
+ "@abaplint/transpiler": "^2.11.3",
32
32
  "@types/glob": "^8.1.0",
33
33
  "@types/node": "^22.17.0",
34
34
  "@types/progress": "^2.0.7",