diff --git a/.github/regression/regression.js b/.github/regression/regression.js index 49261ee37..37cdd1e61 100644 --- a/.github/regression/regression.js +++ b/.github/regression/regression.js @@ -6,7 +6,7 @@ const childProcess = require("child_process"); const repos = [ {name: "abap-openapi/abap-openapi", command: "npm test"}, {name: "abapGit/abapGit", command: "npm run unit"}, - {name: "dominikpanzer/cacamber-BDD-for-ABAP", command: "npm test"}, +// {name: "dominikpanzer/cacamber-BDD-for-ABAP", command: "npm test"}, {name: "heliconialabs/abap-opentelemetry", command: "npm test"}, {name: "heliconialabs/abap-protobuf", command: "npm test"}, {name: "larshp/abap-advent-2020", command: "npm test"}, diff --git a/packages/cli/package-lock.json b/packages/cli/package-lock.json index 1e01793a3..2bc6bc51f 100644 --- a/packages/cli/package-lock.json +++ b/packages/cli/package-lock.json @@ -1,19 +1,19 @@ { "name": "@abaplint/transpiler-cli", - "version": "2.10.16", + "version": "2.10.17", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@abaplint/transpiler-cli", - "version": "2.10.16", + "version": "2.10.17", "license": "MIT", "bin": { "abap_transpile": "abap_transpile" }, "devDependencies": { "@abaplint/core": "^2.113.6", - "@abaplint/transpiler": "^2.10.16", + "@abaplint/transpiler": "^2.10.17", "@types/glob": "^8.1.0", "@types/node": "^22.5.4", "@types/progress": "^2.0.7", @@ -45,9 +45,9 @@ } }, "node_modules/@abaplint/transpiler": { - "version": "2.10.16", - "resolved": "https://registry.npmjs.org/@abaplint/transpiler/-/transpiler-2.10.16.tgz", - "integrity": "sha512-CqS+tV9CqNB3M0pM4Im9Xn3O5wfNa/B/3UY8IKRN2SWX2YVzSoh/EONB3hGUqKdSt8O56dq36HvE2c55otrpvQ==", + "version": "2.10.17", + "resolved": "https://registry.npmjs.org/@abaplint/transpiler/-/transpiler-2.10.17.tgz", + "integrity": "sha512-AWwCyk0eOUj0ldcDzMFwfMKFgLvO/hHR3nT1HY01H9XZ5Liq8mDpMU7sAhXzR6MlaSMG0FtGmthErJYn07/KdQ==", "dev": true, "dependencies": { "@abaplint/core": "^2.113.6", @@ -1577,9 +1577,9 @@ } }, "@abaplint/transpiler": { - "version": "2.10.16", - "resolved": "https://registry.npmjs.org/@abaplint/transpiler/-/transpiler-2.10.16.tgz", - "integrity": "sha512-CqS+tV9CqNB3M0pM4Im9Xn3O5wfNa/B/3UY8IKRN2SWX2YVzSoh/EONB3hGUqKdSt8O56dq36HvE2c55otrpvQ==", + "version": "2.10.17", + "resolved": "https://registry.npmjs.org/@abaplint/transpiler/-/transpiler-2.10.17.tgz", + "integrity": "sha512-AWwCyk0eOUj0ldcDzMFwfMKFgLvO/hHR3nT1HY01H9XZ5Liq8mDpMU7sAhXzR6MlaSMG0FtGmthErJYn07/KdQ==", "dev": true, "requires": { "@abaplint/core": "^2.113.6", diff --git a/packages/cli/package.json b/packages/cli/package.json index 3a890359d..517446190 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@abaplint/transpiler-cli", - "version": "2.10.16", + "version": "2.10.17", "description": "Transpiler - Command Line Interface", "funding": "https://github.com/sponsors/larshp", "bin": { @@ -26,7 +26,7 @@ "author": "abaplint", "license": "MIT", "devDependencies": { - "@abaplint/transpiler": "^2.10.16", + "@abaplint/transpiler": "^2.10.17", "@types/glob": "^8.1.0", "glob": "=7.2.0", "@types/progress": "^2.0.7", diff --git a/packages/runtime/package-lock.json b/packages/runtime/package-lock.json index 60f17812c..e4129aab5 100644 --- a/packages/runtime/package-lock.json +++ b/packages/runtime/package-lock.json @@ -1,12 +1,12 @@ { "name": "@abaplint/runtime", - "version": "2.10.16", + "version": "2.10.17", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@abaplint/runtime", - "version": "2.10.16", + "version": "2.10.17", "license": "MIT", "dependencies": { "temporal-polyfill": "^0.2.5" diff --git a/packages/runtime/package.json b/packages/runtime/package.json index 5d53b27dd..94c1d41a5 100644 --- a/packages/runtime/package.json +++ b/packages/runtime/package.json @@ -1,6 +1,6 @@ { "name": "@abaplint/runtime", - "version": "2.10.16", + "version": "2.10.17", "description": "Transpiler - Runtime", "main": "build/src/index.js", "typings": "build/src/index.d.ts", diff --git a/packages/runtime/src/statements/assign.ts b/packages/runtime/src/statements/assign.ts index 8a5da99fc..67bb8f220 100644 --- a/packages/runtime/src/statements/assign.ts +++ b/packages/runtime/src/statements/assign.ts @@ -30,7 +30,13 @@ export function assign(input: IAssignInput) { input.dynamicSource = input.dynamicSource.dereference(); } else { // @ts-ignore - input.dynamicSource = input.dynamicSource.get()[s.toLowerCase().replace(/[~\\/]/g, "$") as any]; + const source = input.dynamicSource.get(); + if (source === undefined) { + // @ts-ignore + abap.builtin.sy.get().subrc.set(4); + return; + } + input.dynamicSource = source[s.toLowerCase().replace(/[~\\/]/g, "$") as any]; } } } else { diff --git a/packages/transpiler/package-lock.json b/packages/transpiler/package-lock.json index aac3fe532..e07f2922a 100644 --- a/packages/transpiler/package-lock.json +++ b/packages/transpiler/package-lock.json @@ -1,12 +1,12 @@ { "name": "@abaplint/transpiler", - "version": "2.10.16", + "version": "2.10.17", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@abaplint/transpiler", - "version": "2.10.16", + "version": "2.10.17", "license": "MIT", "dependencies": { "@abaplint/core": "^2.113.6", diff --git a/packages/transpiler/package.json b/packages/transpiler/package.json index 332c975ff..878699e3e 100644 --- a/packages/transpiler/package.json +++ b/packages/transpiler/package.json @@ -1,6 +1,6 @@ { "name": "@abaplint/transpiler", - "version": "2.10.16", + "version": "2.10.17", "description": "Transpiler", "main": "build/src/index.js", "typings": "build/src/index.d.ts", diff --git a/test/statements/assign.ts b/test/statements/assign.ts index 9fde2d149..e900ab58e 100644 --- a/test/statements/assign.ts +++ b/test/statements/assign.ts @@ -802,4 +802,31 @@ START-OF-SELECTION. expect(abap.console.getTrimmed()).to.equal("5\n2"); }); + it("assign arrow obj", async () => { + const code = ` +CLASS lcl DEFINITION. + PUBLIC SECTION. + CLASS-METHODS bar IMPORTING i_source TYPE any. +ENDCLASS. +CLASS lcl IMPLEMENTATION. + METHOD bar. + FIELD-SYMBOLS TYPE any. + DATA attribute_name TYPE string. + attribute_name = 'i_source->DFSDF'. + ASSIGN (attribute_name) TO . + WRITE / sy-subrc. + ENDMETHOD. +ENDCLASS. + +START-OF-SELECTION. + FIELD-SYMBOLS TYPE REF TO lcl. + DATA obj TYPE REF TO lcl. + ASSIGN obj TO . + lcl=>bar( ).`; + const js = await run(code); + const f = new AsyncFunction("abap", js); + await f(abap); + expect(abap.console.getTrimmed()).to.equal("4"); + }); + }); \ No newline at end of file