Deferred Dependencies
Posted: Wed Mar 28, 2018 3:05 pm
In version 17.0, we are going to make it possible to define a class which has dependencies that have not yet been defined (both in the editor and using ⎕FIX). Potential dependencies are base classes, interface definitions, or :Include of namespaces which do not exist. An error will be issued on first use of a class which has missing dependencies, rather than at "fix time".
The primary motivation for this change is to make it easier to define a "folder full" of source files in (for example) alphabetical order, rather than needing to take care to fix the base classes first, and then classes which depend upon them. Secondarily, it allows you to work "top down" when defining a class hierarchy.
Existing applications might be trapping errors at fix time and not have trapping in place at use time, which means this is a potentially breaking change. At the same time, I believe that in nearly all cases, the change will be a very significant improvement.
This leaves us with a dilemma with respect to picking a default. We would like this new behaviour to be on be default, but worry about making a breaking change without more notice. I'd be interested to hear any opinions on what the default should be, in particular if you think it should be OFF by default.
Thanks in advance for sharing opinions on this!
The primary motivation for this change is to make it easier to define a "folder full" of source files in (for example) alphabetical order, rather than needing to take care to fix the base classes first, and then classes which depend upon them. Secondarily, it allows you to work "top down" when defining a class hierarchy.
Existing applications might be trapping errors at fix time and not have trapping in place at use time, which means this is a potentially breaking change. At the same time, I believe that in nearly all cases, the change will be a very significant improvement.
This leaves us with a dilemma with respect to picking a default. We would like this new behaviour to be on be default, but worry about making a breaking change without more notice. I'd be interested to hear any opinions on what the default should be, in particular if you think it should be OFF by default.
Thanks in advance for sharing opinions on this!