the-carlisle-group / Acre-Desktop

A simple Dyalog APL IDE plugin that introduces "projects" and allows you to keep your source code in Unicode text files.
MIT License
11 stars 1 forks source link

Bug starting acre in Dyalog 14.0 #196

Closed PhilLast closed 5 years ago

PhilLast commented 5 years ago
Dyalog APL/W-64 Version 14.0.21929
Serial No : 003280
Unicode Edition
Non-commercial Licence
Fri Aug 30 22:00:25 2019
clear ws
      ]acre.Version
* Command Execution Failed: SYNTAX ERROR
      ]udebug on
Was OFF
      ]acre.Version
⍎SYNTAX ERROR
setAPI[3] ⍵.AfterSave←ici.(AfterSave apiFunRun ⍺)
         ∧

This occurs during the setup of an acre session. It's not specific to the Version user-cmd or anything to do with the AfterSave api-fn. Indeed it occurs before sufficient of the framework is in place and ready to differentiate between the commands or the functions.

But it is specific to Dyalog 14.0.

There's a bug in 14.0 (and presumably earlier) that throws a spurious SYNTAX ERROR during the assignment of derived functions across namespace boundaries that was corrected in Dyalog 14.1 as this works perfectly in 14.1 and up.

Unfortunately the tests won't work in all the Dyalog versions that acre itself runs in so to discover this before release I should at least attempt to start an acre session in each, open a project and change something in the editor as that covers 90% of everything acre does. I haven't and have been relying on the fact that acre starts in the latest version I have and passes all significant tests.

I'll try to fix this over the weekend that means finding another algorithm for creating 26 derived functions on-the-fly in ⎕SE.acre that works in all Dyalog versions. I've worked around it before because I've been doing this stuff more-or-less since refs first existed.

PhilLast commented 5 years ago

Fixed with commit Acre 6.0.0+258 2019-08-31 21:51

Seems you could assign derived functions into the current space from elsewhere but not into another space from here. Oh well. Works now 14.0 - 17.0 and no expectation that it won't continue to work henceforward.