ColdFrame: Bugs

If a bug is numbered nnnn it's only reported in this document. If a bug is numbered nnnn/mmmmmmm, the mmmmmmm is the (old) SourceForge bug number. Bugs after 0376 are only logged at SourceForge.

Outstanding

0062 (raised 23.i.02)
It would be useful to be able to specify constants.
Pi is specially handled, in "expression" contexts (initial values, {real} ranges).
0078 (raised 18.iv.02)
ColdFrame doesn't detect the error of having non-unique abbreviations.
0174 (raised 17.vi.03)
The error of making an Association with a «type» should be detected (instead of generating bad code).
0182 (raised 9.vii.03)
Using {formalizes} on a non-class attribute gives an unhelpful error message.
0183 (raised 9.vii.03)
Using {imported} (and possibly others) on a «type» with attributes gives an unhelpful error message.
0184 (raised 9.vii.03)
«public» and «singleton» classes have a Create operation which is not meant to be called by handwritten code. Perhaps it should be renamed.
0203 (raised 16.ix.03)
When checking whether an abstract operation has been implemented, ColdFrame doesn't check that the operation profiles match (for example, that both are procedures or both functions). This can lead to compilation errors in generated code.
0240 (raised 2.iii.04)
The Event Queue operation Unset assumes it's called in an action (ie, with the Event Queue locked).
0253 (raised 19.iv.04)
In a state chart, the error of having more than one state with the same name is not detected as such (this really only happens if you name one of your states initial or final, which are the default names used for initial and final states).
0262 (raised 14.v.04)
Extraction (via Rose) can fail silently.
Probably caused by using nested packages. Consider using cat2raw.py.
0265 (raised 26.v.04)
There is no check that associations' multiplicities have been maintained.
0277 (raised 26.vii.04)
The error messages that are given if there's a relationship involving a class not in the current package (either from a non-«generate» child or from another domain altogether) aren't as helpful as they could be.
0283 (raised 11.ix.04)
The generated code won't compile if all the attributes of a «public» class are «class» attributes.
If you feel you absolutely must have «class» attributes, add a dummy instance attribute as well. But it's not obvious why you'd want to.
0285 (raised 6.xi.04)
The fact that an operation's parameter has a default value isn't considered when checking whether the operation is allowable as an action.
0292 (raised 31.i.05)
There's no way of seeing the {revision} string for a «generate»d (now «include»d) package.
0332 (raised 30.ix.05)
You can't use events-to-self from an event that's being handled synchronously.
0342/1401275 (raised 10.i.06)
ColdFrame's checks on state machines don't properly handle the case where actions are inherited; in particular, the error of having transitions (particularly completion transitions) from a state with a «final» action (ie, where the instance has been deleted) may not be detected.
26.x.07: checks now include inherited actions, but the reported problem still exists.
0362 (raised 5.ix.06)
Generated unit test support fails to compile if a «public» class has an attribute of a private type.
On the whole it's best if public classes don't have attributes at all.
0369/1964067 (raised 14.v.08)
If an instance event is declared with «instance event» but there's no corresponding transition on the state machine, the generated spec requires a handler which the body doesn't provide.

Fixed

6.ix.08

0376/2080418 (raised 28.viii.08)
If you have a sequence diagram with messages that contain a quote (for example), they are backslash-escaped; and cat2raw.py (the lex component, I guess) rejects them.

8.vii.08

0371/2009429 (raised 3.vii.08)
When an active instance is deleted, no check is made for whether its task has actually terminated. If it hasn't, the task won't actually get deleted, and memory will leak.
0372 (raised 3.vii.08)
The Delete and Find operations for unbounded classes can leak memory with some older releases of GNAT.
This was originally notified 31.i.06.
0373/2013298 (raised 8.vii.08)
Exception renaming/import requires old [[annotation]] syntax.
0374/2013300 (raised 8.vii.08)
Generated HTML doesn't include exceptions.
0375/2013830 (raised 8.vii.08)
Generated HTML doesn't include «abstract» in single-class diagrams.

1.vii.08

0370/1983328 (raised 3.vi.08)
The code generated when GENERATE_EVENT_LOGGING=yes doesn't match the recent changes to ColdFrame.Project logging.

3.v.08

0035 (raised 1.xi.01)
The association support packages generated when one of the parties in a 1:1 association is a «singleton» won't work if the non-singleton party is marked {source}.

27.x.07

0368/1811578 (raised 11.x.07)
The generated code for a protected function doesn't handle the many non-simple possibilities for return value types (eg, arrays).

1.vii.07

0361/1546249 (raised 24.viii.06)
While doing unit tests using ColdFrame.Project.Events.Standard.Inspection, it wasn't possible to simulate the firing of a Timer where the actions result in the Timer getting set again (for example, when sending a regular message) by getting the event using Event_Of and invoking its Handler, because the Timer was still set.
Added a new procedure Inspection.Fire (A_Timer).
0367/1744249 (raised 27.vi.07)
A ColdFrame.Interrupts.Handler must detach itself from the interrupt if there was no previous handler to replace.

18.v.07

0359/1544856 (raised 22.viii.06)
At present, class and instance events have the same priority. However, since class events are usually used to isolate one domain from another, it's arguable that class events should have lower priority than instance events; all the instance events following from the handling of a class event should be handled before considering the next class event.

24.iii.07

0366/1687327 (raised 23.iii.07)
The error of having multiple transitions from a state triggered by the same event isn't detected (the fix implemented in response to 0206 didn't always work).

30.xi.06

0352 (raised 6.iv.06)
ColdFrame doesn't detect the error of having more than one type with the same name.
0364/1605567 (raised 29.xi.06)
The error of a domain having two different type definitions isn't detected. This could happen with an interface child UML package.

3.xi.06

0363/1589302 (raised 3.xi.06)
Hash function generation doesn't recognise modular types.
Use {hash=discrete} in the «type».

5.ix.06

0358/1517591 (raised 7.vii.06)
When a class has an attribute whose type is a protected type the generated Unit_Test child package fails to compile.

23.iv.06

0355 (raised 21.iv.06)
The (de)serialization code generated for {type-image} doesn't compile.
0356 (raised 21.iv.06)
Would it be possible to mark an attribute {aliased}? (Ada semantics).
0357 (raised 21.iv.06)
It would be good if a completion transition from a state with a «final» action to a final state wasn't treated as an error.

19.iv.06

0353/1472823 (raised 19.iv.06)
ColdFrame reports:
   Error: couldn't generate type Recording_Queue
   no definition of type Serialization_Base_Class_P
Where Recording_Queue is a protected type with an operation accessing Serialization_Base_Class_P and Serialization_Base_Class is defined as a type with:
   {renames = Serialization_Support.Base Class}
   {access = Serialization_Base_Class_P}
The problem is not reported if a dummy type is declared which has an attribute of Serialization_Base_Class_P.
0354/1473115 (raised 19.iv.06)
The functions Is_Set and Expires_At in ColdFrame.Events_G.Test_G are not dispatching operations in the same way as Wait_Until_Idle, this makes calling these functions virtually impossible.
Versions of Is_Set and Expires_At need declaring in ColdFrame.Events_G in the same way as Wait_Until_Idle to make them usable.

8.iv.06

0351 (raised 6.iv.06)
If you specify a function returning Handle, the generated stub tries to return Handle'First instead of null.
If the Handle represents an instance of a class in this domain (including 'this' class), use the class name. If it represents an instance of a class in another domain, use Counterpart (or a {counterpart} type).

22.iii.06

0331 (raised 27.ix.05)
If a «type» includes an attribute whose type is a class in the domain (which is translated as ColdFrame.Instances.Handle), that of itself doesn't cause a with of ColdFrame.Instances.
0350 (raised 22.iii.06)
If the interface part of a domain that has no operations of types is being stubbed, no package body is generated. This is a Bad Thing if the full domain does have operations of types (or protected types), because you can't just use an extension GPR to override the full software tree.

18.iii.06

0349 (raised 9.iii.06)
Teardown doesn't finalize instance Timers (so you get log messages about a Timer being destroyed while holding an event).

4.iii.06

0348/1442276 (raised 3.iii.06)
When inspecting an event queue, held events are in time order whereas you would expect them to be in posting order.

18.ii.06

0346/1433373 (raised 17.ii.06)
The documentation says that atomic and volatile can be specified using stereotypes on objects; in fact they can only be specified using tags. Shouldn't there be at least a warning for unrecognised stereotypes?

6.ii.06

0343 (raised 29.i.06)
The problem reported at 0319 wasn't a problem at all. Domain initialization should be called at the very beginning; and there should be some documentation on initialization.
0344 (raised 6.ii.06)
Stubbed operations of types aren't thread-safe.
0345 (raised 6.ii.06)
Although it would be normal for the output values and the exceptions in a stubbed interface to be set up before execution begins, it would be a good thing if the setup could be thread-safe.

31.xii.05

0341 (raised 29.xii.05)
Rose doesn't mind if people use the "wrong" capitalization for CURDIR, so it would be as well if cat2raw.py didn't either.

17.xii.05

0338/1359556 (raised 18.xi.05)
The supplied test/Makefile may not work if the environment has been customised by the project; particularly, the Ada project path shouldn't introduce additional dependencies, and executables generated need to run on the host.
0339/1365266 (raised 24.xi.05)
Domain_Initialized can't be used by a task to tell when initialization is complete.
0340/1371468 (raised 2.xii.05)
A ColdFrame.Project.Events.Standard.Test_Trace event queue starts in the started state.

2.xi.05

0334/1315548 (raised 7.x.05)
There is a storage leak if a state machine action that is not marked «final» or named Delete deletes the instance. The leak is caused by the deliberate raising of ColdFrame.Exceptions.Use_Error.
Of course the code that deleted the instance is in violation of its contract ...

1.xi.05

0337/1337007 (raised 25.x.05)
There's a potential deadly embrace if a dispatched action tries to delete an instance after the Held Event Manager has finished.

19.x.05

0335/1331554 (raised 19.x.05)
The 'normalization' phase of code generation takes a very long time on Windows systems; observed on Windows2000 and XP. Seemed bad enough on 2k (about 60 times slower than on Linux), really painful on XP.
0336/1331565 (raised 19.x.05)
A cat2raw.py problem: the Python stack trace ends with:
File "cat2raw.py", line 502, in emit_contents
self.statemachine.state_named(self.supplier).name(),
AttributeError: 'NoneType' object has no attribute 'name'

1.x.05

0333 (raised 30.ix.05)
The provided Test_Trace and Test_Debug instantiations don't compile.
This seems to be a compiler problem (FSF 4.0.0, GNAT 5.03a1).

3.ix.05

0326/1266456 (raised 22.viii.05)
Especially when running under Windows, it's all too possible for the Makefiles to pick the wrong version of a command (eg find).
0327/1265701 (raised 22.viii.05)
It would be helpful to output a domain's {revision}, to standard error; that way you could see the revision in captured logs.
0328 (raised 22.viii.05)
An Event Queue with no references can't be torn down.
0329 (raised 2.ix.05)
If you call Wait_Until_Idle on a (test) event queue that hasn't been started, it may hang.
Now, a Use_Error exception is raised.

12.viii.05

0324 (raised 12.viii.05)
The event Dispatcher's logic is faulty; specifically, Stop_Handling is called twice.
0325 (raised 12.viii.05)
The Stop_Handling operation for instance events results in invalid memory accesses if the instance was deleted by the event handler.

7.viii.05

0321/1239282 (raised 16.vii.05)
It would be helpful to check that subprogram names and parameters passed to the stub mechanism are correct; also that overridings are intended.
0322/1252188 (raised 4.viii.05)
If you have an event queue which doesn't start at creation (all Test event queues, or any queue with Start_Started false), there's a possible race condition (especially if the queue is low priority) which can lead to lockup when Start is eventually called.
0323/1253254 (raised 6.viii.05)
The stub mechanism isn't thread-safe.

12.vii.05

0318 (raised 6.vii.05)
A class may be active (have a task) and have a state machine. If so, it would be a good idea if the current state could be made atomic.
0319 (raised 6.vii.05)
A domain initialization {init} operation should be called after any class initializations have been done (ie, singletons exist, class attributes with default values have been set up).
0320 (raised 12.vii.05)
Stub generation fails for types such as Time.

4.vii.05

0317/1231591 (raised 4.vii.05)
Protected function return types aren't taken account of when calculating the order in which to output type declarations.

16.vi.05

0316 (raised 16.vi.05)
Bad code was generated for an association formalized by an identifying attribute.

14.vi.05

0314/1219816 (raised 13.vi.05)
The body code generated for the Create and Find operations of a many-to-many reflexive association doesn't compile (it uses the same parameter name for each role).
0315 (raised 14.vi.05)
Navigations for reflexive associations aren't correct.

11.vi.05

0311 (raised 24.v.05)
It would be good to be able to suppress the 'de-serialization' code in the Domain.Serializable package (it's only needed in the analyzing executable).

28.v.05

0312 (raised 26.v.05)
With GNAT there are no hardware floating-point exceptions; you just get Infs or NaNs on overflow. However, you do get Constraint_Error on assigning to a constrained subtype; it would be a Good Thing if this feature could be used.
0313 (raised 27.v.05)
A parental class operation masks a failure to declare a state action procedure.

18.v.05

0307 (raised 12.v.05)
The version reported by the code generation phase is misleading if CODEGEN_SCRIPT was defined and you've forgotten to import the new XSLT scripts.
This also happens with the normalization script.
0310 (raised 18.v.05)
If an inherited operation is marked private (or implementation), two specs will be generated (the inherited one in the public part, the private one in the private part).

13.v.05

0308 (raised 12.v.05)
Bad code is generated in children where an «accessor» operation is marked private.
Not clear what good a private accessor is - you have direct visibility of the instance attributes! Perhaps the user meant to say protected?
0309 (raised 12.v.05)
The generated header for separate proper bodies ought not to include ColdFrame version information (it will be well out of date after a few years, and people don't seem to want to delete it).

12.v.05

0305/1199638 (raised 11.v.05)
It is not possible to use a class called System as compiling the generated code fails with: "Storage_Elements" not declared in "System". This can be resolved by prefixing System with Standard in the generated code.
0306 (raised 12.v.05)
If a function returns a class, the proper dummy return value is null.

8.v.05

0068 (raised 6.iii.02)
It would be useful to be able to specify subtypes (eg, of enumerations).
Use {constrains}.

30.iv.05

0302 (raised 29.iv.05)
A private type couldn't depend on (eg, have a component of) a public type.
0303 (raised 30.iv.05)
A private type can't be {serializable}.
Exactly so! This is now reported.

23.iv.05

0300/1182842 (raised 14.iv.05)
The Wait_Until_Idle operation of test event queues has an option to ignore events that are held on timers (and can be retracted) but not events that are just held (fire and forget).
The Ignoring_Timers parameter now indicates that both timer and plain held events are to be ignored.
0301 (raised 22.iv.05)
It's an unrecoverable error for an active instance's task to try to delete itself, so it would be a good idea to report it.

22.iv.05

0298/1183184 (raised 14.iv.05)
The supplied storage pools fill memory with 16#deadbeef# both before returning it from Allocate and when it's returned to Deallocate. Might be helpful to fill with something different in the two cases.
Deallocated memory is filled with 16#dead#.
0299/1183180 (raised 14.iv.05)
The provided storage pools fill memory with 16#deadbeef#. This looks fine on PowerPC (big-endian) hardware but less visible on Intel (little-endian), because the *byte* order is reversed (16#efbeadde#).

3.iv.05

0297 (raised 3.iv.05)
Normalization failed with newer releases of Tcl (the element start command callback has additional parameters for namespace information).

24.ii.05

0294 (raised 6.ii.05)
It would be helpful to be able to specify an initialization operation to be called before any «init» operations during domain initialization.
0295 (raised 11.ii.05)
It would be useful to be able to specify atomic, volatile on types (translating to the corresponding pragmas).

6.ii.05

0293 (raised 4.ii.05)
«teardown» operations mustn't also be «class» operations.

2.ii.05

0291 (raised 28.i.05)
Could the documentation of attributes be output in the generated code?

30.i.05

0261 (raised 29.iv.04)
The DTDs should be brought up-to-date (or replaced by schemas).
See ColdFrame-raw.xsd for .raw files, ColdFrame-norm.xsd for normalized files.

29.i.05

0289 (raised 15.xi.04)
If a «protected» type can't be declared because of an undeclared type in one of its operations, the error message doesn't mention the offending type.
The actual problem was Natural, which of course Ada programmers know exists in package Standard. Perhaps some more of Ada's standard types should be predefined for ColdFrame.
Added Character, Duration, Natural, Positive.

20.xii.04

0290 (raised 20.xii.04)
There seems to be a Cygwin problem if the .impl directory has too much code in it (total length of *.ad[bs] was > 37,000 characters).
This was actually fixed 2.xi.04.

3.xii.04

0249 (raised 2.iv.04)
The «generate» stereotype on nested packages is confusing. Perhaps it should be «include»?
Of course, «generate» must be retained for compatibility.
0271 (raised 30.vi.04)
It would be helpful to have an Epoch value in ColdFrame.Project.Calendar.
0288 (raised 11.xi.04)
The information on generalization and inheritance doesn't describe what you're supposed to do with operations and attributes.

12.xi.04

0286 (raised 9.xi.04)
The element type for an {array} isn't translated properly (so, for example, Text isn't converted to Unbounded_String).
0287 (raised 9.xi.04)
The new {access} tag's value needs to be hand-normalized (you have to put in your own underscores and capitalization).
This only happened for types without attributes.

25.x.04

0090 (raised 7.vi.02)
It should be possible to declare «type»s "private".

11.ix.04

0281 (raised 9.ix.04)
A Timer can't be a «class» attribute.
It's not obvious why you'd want to do that.
0282 (raised 9.ix.04)
A «protect»ed type without operations (which is a problem in its own right!) won't compile.

8.ix.04

0280 (raised 8.ix.04)
All_Instances and Selection_Function won't compile for a class which can have at most one instance.

3.ix.04

0250 (raised 4.iv.04)
Unsigned types should be supported.

31.viii.04

0274 (raised 26.vii.04)
If a private operation is marked «init» the resulting code won't compile.
0278 (raised 26.vii.04)
If a «protect»ed type has an operation with parameters, the types of the parameters may not be declared before the protected type itself.
0279 (raised 26.vii.04)
«access» operations of «protect»ed types aren't generated.

28.vii.04

0276 (raised 28.vii.04)
Integer «type»s are generated as new Integer range, should be just range.
0275 (raised 27.vii.04)
Integer «type»s used to be generated as types, now they are subtypes.

14.vii.04

0272 (raised 9.vii.04)
Using {imported} etc on a «type» with attributes is silently ignored.

7.vii.04

0227 (raised 23.i.04)
Bug 0170 ("If an operation of a «type» is a function returning a composite value, the generated code won't compile.") is still present (for both «type»s and «class»es) when the composite value is imported or inherited from a parent domain (and therefore isn't otherwise mentioned in the model).

3.vii.04

0019 (raised 4.ix.01)
It would be good to support private operations.
Private operations of classes and protected types are implemented as private subprograms.
0177 (raised 26.vi.03)
It would be helpful for ColdFrame to recognize "class utilities" (classes which have no instances).
0195 (raised 5.ix.03)
For «public» classes without attributes, it seems wasteful to allocate an Instance.
0222 (raised 3.xii.03)
Active class instances are torn down after the domain event queue, which may cause Tasking_Error if the active instance tries (for example) to post an event.
0269 (raised 17.vi.04)
Some of the Event Test tests have slightly too tight time limits, so that tests can fail the first time they're run.

30.vi.04

0270 (raised 23.vi.04)
The error of omitting the initial state of a state machine isn't detected (instead, you get bad code).

18.vi.04

0267 (raised 14.vi.04)
If an event handler throws an exception, the instance can't be deleted (probably until an event is successfully handled).
0268 (raised 17.vi.04)
The test procedure names (reported by the -v AUnit option) aren't all as clear as they could be.

10.vi.04

0233 (raised 10.ii.04)
Exceptions in the standard Event Queue's Timer_Manager are fatal.
Of course, the system will be unstable after such an exception.

4.vi.04

0264 (raised 20.v.04)
A race condition where tear-down involving a Timer can result in Program_Error exceptions makes unit test difficult. This is a result of the cure for bug 0236.
Instead of raising an exception, ColdFrame now logs an error. Some sort of traceback would clearly be helpful, though.
0266 (raised 4.vi.04)
Leading and trailing spaces in Domain package names get translated into underscores; they should be stripped.

20.v.04

0263 (raised 20.v.04)
If a callback operation deregisters itself it leads to a jump out of program (Program_Error, if you're lucky!)
Messing about with registering/deregistering callbacks is still not task-safe. However, so long as you don't try deregistering another callback from a callback operation you should be OK!

12.v.04

0206 (raised 27.ix.03)
The error of having multiple transitions from a state triggered by the same event isn't detected.
0256 (raised 22.iv.04)
Naming an event Ev results in bad code.

5.v.04

0254 (raised 21.iv.04)
A «finalize» operation on a «singleton» results in bad code. It should be a code generation error.
0260 (raised 29.iv.04)
Extracted documentation should be in CDATA sections (to ensure that the .raw file is valid XML).

29.iv.04

0242 (raised 11.iii.04)
It would be helpful to translate a «type» with no attributes and no type-specifying tags ({real} etc) into a null record, perhaps with a warning.
0258 (raised 28.iv.04)
Bad code is generated if you say {integer, lower=1, upper=6} (rather than {integer = lower 1 | upper 6}).
If you omit a bound the corresponding 'First or 'Last is used.

26.iv.04

0257 (raised 26.iv.04)
If an exception gets raised in a called-back routine, an error should be logged (rather than re-raising the exception to the supplier).

22.iv.04

0234 (raised 12.ii.04)
It would be helpful if action routines could be inherited from a superclass.
0255 (raised 21.iv.04)
Using an {integer} «type» with bounds expressed as based literals (16#ff#, for instance) as the only identifier of a class results in bad code.
As a workround, legal but non-optimal code is generated.

17.iv.04

0247 (raised 27.iii.04)
It's not obvious what the test models Bad Model Regressions, Bad Code Regressions are testing for.
0251 (raised 15.iv.04)
Generated HTML doesn't include operations of «type»s unless the type has attributes.
0252 (raised 16.iv.04)
Attempts to give a «public» class a state model should be explicitly forbidden, rather than letting them generate non-compiling code.

4.iv.04

0031 (raised 13.x.01)
«finalize» operations which are functions or have parameters (or are «class» operations) are silently not called at finalization.
There are other instances of bad usage which need reporting (perhaps in a separate pass?)
0088 (raised 7.vi.02)
Extraction hangs if the output directory (the environment variable COLDFRAMEOUT) doesn't exist.
0167 (raised 25.iv.03)
It is easy to forget to initialize a domain. Could something be included to give early and specific warning that this has occurred?
Non-«singleton» Creates, and generated operations of «public» classes include an assertion.

1.iv.04

0248 (raised 31.iii.04)
Expressions in, for example, the lower bound of an {integer} specification don't handle **.
^ and ** are both handled (^ translates to **, of course).

27.iii.04

0215 (raised 15.xi.03)
The installation instructions' notes on overriding ColdFrame.Project source are wrong for both Linux and Windows.

24.iii.04

0246 (raised 23.iii.04)
Can't generate code for a «type» containing an attribute of an {array} type.
The problem was that the array element type hadn't been declared. Now reports the undeclared type.

19.iii.04

0056 (raised 8.i.02)
The generated HTML doesn't report default parameter values.

13.iii.04

0243 (raised 12.iii.04)
Domain tear down will fail if you have an «active» class with a Timer, and an instance's Timer has a held event.

9.iii.04

0241 (raised 9.iii.04)
Bad code is generated if a class has a single attribute identifier of a type which is either an enumeration with a single value ({enumeration=foo}) or an integer range with a single value ({integer=lower 42|upper 42}).

2.iii.04

0239 (raised 1.iii.04)
Can't generate code for a Rose state model that has been renamed from the standard State/Activity Model (with possible trailing numbers).

23.ii.04

0214 (raised 12.xi.03)
The mechanism for dealing with multiple users of the same Event Queue is flawed;

The Copy operation is obsolete.

22.ii.04

0237 (raised 17.ii.04)
It would be helpful to detect the error of deleting an instance from within a state machine action for that instance.
It's allowed to call the generated instance Delete or an operation stereotyped «final». Deleting the instance from within any other operation will result in a Program_Error with a suitable message..

21.ii.04

0236 (raised 17.ii.04)
It would be helpful to detect the error of creating (and using) a Timer on the stack.
Detects the case when the Timer still has a held Event when it goes out of scope. Also invalidates the Event.

13.ii.04

0230 (raised 2.ii.04)
It would be useful to be able to specify fixed-length string types.

10.ii.04

0231 (raised 9.ii.04)
An association with a «public» class generates bad code without warning.

27.i.04

0226 (raised 22.i.04)
If a class is an «active» «singleton» and has «class» attributes with initial values, the task starts before the initial values are assigned.
0228 (raised 23.i.04)
It would be useful to assert that:
0229 (raised 25.i.04)
The documentation on an operation that matches an accessor profile isn't copied to the separate body.

13.i.04

0225 (raised 13.i.04)
If a {null} type is marked {serializable}, the generated code doesn't compile.

11.i.04

0047 (raised 6.xii.01)
It might be useful to be able to describe array «type»s.

3.i.04

0219 (raised 27.xi.03)
It would be helpful if a Cant_Happen exception was accompanied by exception information (to make it easier to debug).

13.xii.03

0220 (raised 27.xi.03)
Would it be possible to have «type»s with no contents? Useful for, for example, callbacks where only the event matters.
Use the {null} tag.

12.xii.03

0221 (raised 2.xii.03)
Using a bounded string ({string = max 15} say) in an identifier generates code that fails to compile.
0223 (raised 11.xii.03)
Tagged values of the form {xxxx:1234} generate bad XML in the .norm file.
This is now an error.
0224 (raised 12.xii.03)
Reporting all unrecognised tags can be very annoying (especially where there are ubiquitous project-specific uses!)

25.xi.03

0217 (raised 25.xi.03)
The class Delete operation for a 0..1 class doesn't null out the container, so it appears that there is still an instance.
0218 (raised 25.xi.03)
If a class with multiplicity 0..1 is the parent in an inheritance relationship and has a state machine, the generated code may not compile.

21.xi.03

0216 (raised 21.xi.03)
package body Domain is generated even if the only operations are imported or renamings.

14.xi.03

0059 (raised 16.i.02)
It would be proper to use UML tagged values instead of [[ ]] annotations.
Annotations are, of course, retained.

Remembrance Day 2003

0211 (raised Remembrance Day 2003)
There is a memory leak if an exception occurs in a callback routine. See bug 0191.
0213 (raised Remembrance Day 2003)
The generated separate bodies of operations of types don't include any documentation comments.

4.xi.03

0209 (raised 3.xi.03)
Taking the hash of a null access type resulted in a Constraint_Error.

31.x.03

0208 (raised 30.x.03)
The generated serialization Image code includes the outer record name in the field names.

4.x.03

0207 (raised 2.x.03)
The default error logging produces mangled output if there are multiple tasks.

27.ix.03

0205 (raised 27.ix.03)
Although ColdFrame detects multiple drop-through transitions from a state, it reports them as being from another state.
The error of having both drop-through and triggered transitions from the same state is also detected.

23.ix.03

0204 (raised 23.ix.03)
Classes with state machines won't compile ("primitive operation declared too late").

17.ix.03

0201 (raised 16.ix.03)
If you use an expression for an upper or lower bound, it mustn't have spaces (so write lower -2.0*Pi). Initial values are OK.
0202 (raised 16.ix.03)
A class variable of the class's type doesn't compile ("representation item appears too late").

13.ix.03

0200 (raised 12.ix.03)
If you don't need an event queue, you don't need to edit Domain.Events.Initialize.
Normally you'd supply Domain.Initialize or .Cascade_Initialize with an event queue; you only need to implement Events.Initialize for unit test.

6.ix.03

0194 (raised 5.ix.03)
Would it be possible to put the "identification information" header comments in all generated files, not just the domain spec?
Is it necessary still to output the number of generated lines of code? What algorithm should be used (at present it's a semicolon count)?

3.ix.03

0193 (raised 3.ix.03)
With the new container implementation, calling Find for an «active» class hangs.

2.ix.03

0192 (raised 2.ix.03)
During a cascade teardown, it is possible for an event dispatcher to be torn-down twice (resulting in a constraint error when updating the access count).

31.viii.03

0190 (raised 22.viii.03)
It could be useful to allow actions on event transitions.
You could try colouring the states which have the actions that you'd have preferred to put on transitions in a pale colour (white?)

28.viii.03

0191 (raised 27.viii.03)
In «callback» handling, if a registered callback operation raises an exception during Call_Callbacks processing will stop (so that some registered callback operations don't get called).

24.vii.03

0189 (raised 22.viii.03)
The order in which the State Event matrix is presented in generated HTML is confusing (the entry actions should come first).

15.viii.03

0187 (raised 13.viii.03)
If a class with an Autonumber identifier has a maximum number of instances of 1, an unused procedure Set_Identifier is generated.
0188 (raised 15.viii.03)
Doesn't know how to hash Positive (or Natural?).

12.viii.03

0186 (raised 12.viii.03)
Normalization doesn't correctly handle substring exceptions (eg, *IO doesn't make text io appear as Text_IO but as Text_Io).

30.vii.03

0170 (raised 29.iv.03)
If an operation of a «type» is a function returning a composite value, the generated code won't compile.

4.vii.03

180 (raised 4.vii.03)
Class events without «handler»s aren't detected.
181 (raised 4.vii.03)
A «handler» with the wrong profile isn't detected.

3.vii.03

0154 (raised 21.ii.03)
Operations marked abstract in the class specification dialog aren't seen as such.

26.vi.03

0175 (raised 25.vi.03)
It would be helpful if there was some way of providing overloaded operations (at present, operations are implemented in "separates", which prevents overloading, RM10.1.3(14)).
0176 (raised 25.vi.03)
It would be helpful to be able to rename exceptions.

14.vi.03

0156 (raised 21.ii.03)
Attributes marked class in the class specification dialog aren't seen as such.
0173 (raised 12.vi.03)
If all the attributes of a «singleton» (or «public») class are «class» attributes, the generated code won't compile.

25.v.03

0171 (raised 15.v.03)
Exceptions in domain Initialize procedures aren't reported (unless there's a default "unhandled exception" handler).

18.v.03

0163 (raised 1.iv.03)
If an operation is made «abstract», its previously implemented body will override the generated dispatching body.

17.v.03

0071 (raised 19.iii.02)
It would be useful to be able to use Pi (Ada.Numerics.Pi) in type range specifications.

10.v.03

0143 (raised 9.i.03)
The Create operation could usefully check that referential parameters (which are of type ColdFrame.Instances.Handle) are of the correct actual type.

2.v.03

171 (raised 1.v.03)
If you tear down an event queue that hasn't been started, the program hangs.

1.v.03

0129 (raised 8.x.02)
[[callback]] types tend to be unnoticeable; could a «callback» stereotype be used instead?

29.iv.03

0169 (raised 29.iv.03)
The generated code for functions returning «counterpart» types won't compile.

25.iv.03

0168 (raised 25.iv.03)
The script to split serialized XML files into CSV format isn't included in the distribution.

8.iv.03

0166 (raised 8.iv.03)
A class with a Timer but no state machine generates code that won't compile.

7.iv.03

0164 (raised 7.iv.03)
Deleting an instance with held events pending for it raises an exception.
0165 (raised 7.iv.03)
The special-case state entry action Delete isn't completely handled (the event isn't marked as "instance deleted").

30.iii.03

0157 (raised 9.iii.03)
In the UML, the syntax of parameter is
kind name : type-expression = default-value
where kind is in, out, or inout, with the default in if absent.
0162 (raised 25.iii.03)
The documentation on associations needs to discuss usage for linking and unlinking operations.

16.iii.03

0161 (raised 15.iii.03)
The new Held Events facility isn't general enough; dealing with additional kinds of Time will require a lot of recoding.
Added a Time_Kind enumeration and discriminant in Time_Signature.

13.iii.03

0159 (raised 13.iii.03)
When normalizing names, trailing dots aren't noticed, resulting in obscure gnatchop errors.
0160 (raised 13.iii.03)
If you specify a class to have a multiplicity of 0..(n > 1), and the class has an identifying attribute whose type has only one value (eg an enumeration with only one literal), the generated code won't compile.

10.iii.03

0158 (raised 10.iii.03)
If you use [[hash:style]] (discrete only at the moment), the style needs to be in lower case.

9.iii.03

0150 (raised 6.ii.03)
There needs to be a way to have the "held" Event Queue's entries be re-sorted when the basis of ordering changes (eg, between a local and a standard time frame).
This is done the next time an event fires or is posted.
0151 (raised 11.ii.03)
If events to run "after an interval" are posted to an event queue which hasn't yet started, the interval should refer to the time when the queue is eventually started.

16.ii.03

0018 (raised 4.ix.01)
For efficiency, classes whose identifier has a limited range (eg, Forward/Aft or 1..10) should be implemented with array-like behaviour.
0050 (raised 27.xii.01)
It would be a good thing if the multiplicity of an association class was calculated automatically (where the multiplicity of each associated class is specified).

Valentine's Day 2003

0152 (raised Valentine's Day 2003)
The comments in the body of a function that returns a composite type are not generated properly.

6.ii.03

0149 (raised 6.ii.03)
There should be an option for an individual domain's Events.Initialize to be overridden when constructing a whole system.
Domain.Initialize now takes a Dispatcher parameter, defaulted to null. If not null, it is used as the domain's dispatcher, and Events.Initialize isn't called.

2.ii.03

0072 (raised 19.iii.02)
It seems unnecessary that the [[callback]] facility requires you to specify the maximum number of instances.

19.i.03

0139 (raised 2.xii.02)
If an event queue is designated by more than one domain, the tear-down unit test support won't work properly.
Use ColdFrame.Events.Copy to copy Domain.Events.Dispatcher.
0142 (raised 9.i.03)
The navigation package for an association could usefully have a Find operation to locate the association class instance given the associated instances' handles.
0148 (raised 16.i.03)
It would be helpful to be able to specify an operation's language calling convention.

11.i.03

0147 (raised 10.i.03)
It would be useful to be able to specify type extension.
You can extend external types, not ones internal to the domain; ColdFrame isn't in the business of supporting every possible language feature!

10.i.03

0145 (raised 10.i.03)
Normalization crashes (can't read "rel": no such variable) if you have an association with no multiplicities.
0146 (raised 10.i.03)
The make process doesn't halt if normalization crashes.

9.i.03

0144 (raised 9.i.03)
The distribution should contain the HTML documentation.

24.xii.02

0128 (raised 8.x.02)
It would be helpful to be able to specify how to hash imported/renamed types.
Supports [[ hash : discrete ]].

10.xii.02

0135 (raised 26.xi.02)
The documentation refers to transitions from a state which need no event to trigger them as "unguarded". In fact they are "completion transitions" (UML 1.3, section 2.12).
0140 (raised 3.xii.02)
If a «type» has an attribute of type Counterpart, the necessary with ColdFrame.Instances; isn't generated.

3.xii.02

0094 (raised 24.vi.02)
It's not possible to have automatically-generated accessors for class variables.
Bodies of «class» operations which match an accessor profile will be automatically generated for a «class» variable.
0137 (raised 26.xi.02)
Timed events can cause exceptions in the Event Queue.
0138 (raised 28.xi.02)
Callback packages aren't marked "do not edit".

20.xi.02

0086 (raised 14.v.02)
It would be helpful if the build process could report unimplemented bodies.
0131 (raised 25.x.02)
«finalize» operations don't get called during teardown.
This is deliberate; finalization is about keeping the model consistent, while teardown is much more brutal. However, the case in point involved closing a socket, which does need to happen at teardown.
An additional stereotype «teardown» is provided.

13.xi.02

0098 (raised 25.vi.02)
Multiple delayed events which are required to fire at the same time will result in a delay 0.0 between each.
0134 (raised 13.xi.02)
It might be useful to add the annotation [[counterpart]]; the translation would be a renaming (subtyping) of ColdFrame.Instances.Handle.

11.xi.02

0133 (raised 7.xi.02)
[[formalizes]] should suppress creating additional referential attributes and matching operations.

6.xi.02

0132 (raised Guy Fawkes' Day 02)
Domain initialization calls Domain.Events.Initialize, could be just Events.Initialize.

22.x.02

0065 (raised 28.ii.02)
The mechanism for handling multiple case exception files isn't easy to reconcile with use in Makefiles. Probably needs to use an environment variable.
The environment variable CASE_EXCEPTIONS specifies one or more case exception files. If there's more than one, the separator is ; on Windows, : on Unix.
0130 (raised 22.x.02)
Active classes tend to be unnoticeable; could an «active» stereotype be used instead? as well?

13.x.02

0037 (raised 16.xi.01)
Would it be better only to generate task entries when there's an «entry» stereotype?
0111 (raised 2.ix.02)
It would make testing easier if non-«public» classes could be generated as non-private Ada packages.
Use the stereotype «visible-for-test». You shouldn't do this sort of thing except for unit test, hence the explicitness.

9.x.02

0125 (raised 7.x.02)
Layout of generated exception declarations is incorrect.
0126 (raised 8.x.02)
It's difficult to delete a child instance and its parent in a state machine.
0127 (raised 8.x.02)
Incorrectly reusing an inheritance relationship name isn't detected.

1.x.02

0124 (raised 30.ix.02)
Extraction from Rose doesn't notice if sub-units of a Domain aren't loaded.

20.ix.02

0120 (raised 19.ix.02)
Extraction from Rose doesn't notice if a Domain package isn't actually loaded. The result is a very sparsely-populated domain.
Extraction now loads packages that aren't already loaded.
0121 (raised 19.ix.02)
Using the Windows environment variable ColdFrameOut causes trouble under Cygwin; it comes out as COLDFRAMEOUT.
Rolled over; now in upper case.
0122 (raised 19.ix.02)
Tear-down of Event Queues results in strange Storage_Error or Program_Error exceptions.
0123 (raised 19.ix.02)
Navigation from a 0..1 instance results in Constraint_Error.

17.ix.02

0119 (raised 16.ix.02)
Entry actions would be simpler to write, in some cases, if the state variable contained the new state rather than the old one.
There are two instance variables: State_Machine_State and Old_State_Machine_State. Inside an action, State_Machine_State holds the new state; outside an action, both have the same value.

15.ix.02

0117 (raised 12.ix.02)
There's no support for deleting instances in final states.
0018 (raised 13.ix.02)
The Lock facility of Event Queues ought to allow "events to self" a higher priority than external locks.

12.ix.02

0113 (raised 9.ix.02)
The Wait_Until_Idle operation isn't as useful as it could be if you have timeouts (because there's almost always something held on the event queue).
Wait_Until_Idle now has an optional parameterIgnoring_Timers (defaulted to False) which controls whether Timers are included in the count.
0116 (raised 12.ix.02)
The generated code for an operation returning a value of type Time doesn't compile.

10.ix.02

0114 (raised 10.ix.02)
The warning given when a role's multiplicity has a specific upper bound greater than one (ie, not 1 or *) isn't very helpful.
0115 (raised 10.ix.02)
Creation events for singletons aren't coded properly.

8.ix.02

0110 (raised 2.ix.02)
The Lock features of the standard Event Queue will result in a deadly embrace if used by two domains sharing the same event queue.
0112 (raised 5.ix.02)
There'll be a memory leak if a domain is Initialized more than once.
Tear_Down allows (requires!) the domain to be re-Initialized.

19.viii.02

0097 (raised 25.vi.02)
All the Events that transition to a State with an Action with a parameter must be the same. It would be helpful if this could be changed to "must carry the same payload".

17.viii.02

0073 (raised 11.iv.02)
If a class has a multiplicity of 0..1, it should be possible to Find the only instance (or of course null) without supplying an Identifier.
Both Finds are generated; the one which requires an Identifier is "deprecated".
0081 (raised 9.v.02)
Tear_Down doesn't clean up singletons (especially active ones).
0087 (raised 21.v.02)
Tear_Down doesn't reset «class» variables.
It's actually the Class_Initialize operation that does this.
0103 (raised 16.vii.02)
Automatic formation of abbreviations can result in generating reserved words.
If this condition occurs, an error is reported.
Other uses of reserved words are also reported as errors.
0106 (raised 25.vii.02)
The generated lines-of-code count is wrong, and less useful than it could be.
It's now correct (though still not so useful).
0107 (raised 25.vii.02)
It would be a good thing if documentation in the model could be carried through into the generated code.
0108 (raised 16.viii.02)
The style of programming implied by the present version of ColdFrame.Project.Calendar (a renaming of Ada.Calendar) falls foul of a GNAT feature which fails when you with two renamings of the same package.

16.vii.02

0102 (raised 15.vii.02)
Date, Time should be translated to ColdFrame.Projects.Calendar.Time, with a provided default renaming of Ada.Calendar.
0104 (raised 16.vii.02)
«Singleton»s with state machines don't with ColdFrame.Exceptions.

12.vii.02

0101 (raised 5.vii.02)
Link operations should check that the instances aren't already linked.

10.vii.02

0027 (raised 5.x.01)
For attributes and operation parameters, it would be good to detect missing types (or names).

7.vii.02

0092 (raised 24.vi.02)
There's no Tear_Down for Event management.

4.vii.02

0095 (raised 25.vi.02)
Operations of «type»s are generated even if they're marked «generated» (which means that they're operations that ColdFrame generates automatically).
0100 (raised 4.vii.01)
Signed initializers aren't supported.

27.vi.02

0079 (raised 1.v.02)
It would be helpful if there was a means of declaring exceptions.
0099 (raised 27.vi.02)
Association across reflexive associations is incorrect.
Actually, it's not; but there needs to be more documentation on how to think about role names.

25.vi.02

0093 (raised 24.vi.02)
Deleting an instance may hang if there are no timed events outstanding.
0096 (raised 25.vi.02)
Operations of «type»s don't compile.

8.vi.02

0089 (raised 7.vi.02)
Reflexive associations (without an associative class) generate code that doesn't compile (especially if the cardinality of the class involved has been specified).

29.v.02

0009 (raised 27.vi.01)
It would be helpful if the Create and Find operations of child classes checked that the given identifier (of the parent class's instance) isn't null.
Actually, this comes down to checking in Create that no identifying referential attribute is null. As for Find, there seems no particular reason to check.

20.v.02

0014 (raised 13.vii.01)
No code is generated for operations of «type»s.

18.v.02

0075 (raised 16.iv.02)
Some of the generated operations (eg, accessors for referential attributes) are only intended to be called by generated code. It would be good to indicate this somehow.
0083 (raised 14.v.02)
«access» functions are generated as though they were procedures.
0084 (raised 14.v.02)
ColdFrame ought to respect the modeller's casing; if you say FOO it should come out as FOO.
This change has two consequences:
  • you need to be consistent about case; the code generator is case-sensitive
  • you need to use the case that ColdFrame expects (for example, AutoNumber won't work)
0085 (raised 14.v.02)
ColdFrame generates accessors for referential attributes, but they aren't intended for general use. Can they be marked "private" in the generated code?
See also 0075.

9.v.02

0025 (raised 26.ix.01)
It would be a good thing if illegal characters in names were detected.
0082 (raised 9.v.02)
Tear_Down of an active non-singleton doesn't clean up the associated task.

18.iv.02

0077 (raised 18.iv.02)
If a class has a one-word name, the automatically-generated abbreviation is a single letter. It's a nuisance to have to think of an abbreviation for each such class.
The default "abbreviation" for a single-word class is made by prepending A or An.

17.iv.02

0076 (raised 17.iv.02)
In inheritance hierarchies, bad code is generated for operation parameters whose type is the class in which the operation is declared.

12.iv.02

0074 (raised 11.iv.02)
On Windows, an error in code generation doesn't cause the Make process to quit (so you get a truncated Ada output file rather than none).
Fix is to use instantsaxon version 6.5.1 or later.

18.iii.02

0070 (raised 15.iii.02)
For large domains, the Makefile can generate command lines too long for (the Cygwin) bash.

9.iii.02

0066 (raised 5.iii.02)
Making generated real types new will mean lots of instantiations of Ada.Numerics.Generic_Elementary_Functions. Perhaps subtypes of Float, Long_Float would be better.
0069 (raised 8.iii.02)
If an association is formalized using [[formalizes]] the association package doesn't with the necessary Selection_Function.

4.iii.02

0054 (raised 8.i.02)
Attribute, parameter and result types in the generated HTML should be hyperlinked to their definitions (unless they're standard).
0063 (raised 23.i.02)
It would be useful to be able to specify class variables.
0064 (raised 23.i.02)
There's no documentation on how to set up the Makefiles, how to use on Linux vs Windows etc.

24.i.02

0026 (raised 4.x.01)
It should probably be possible for an operation to take or return a collection of its own class. At present this gives rise to a cyclic dependency.
"Fix" is to withdraw the [[set]] facility. The way to get hold of collections of instances is to use the All_Instances, Selection/Filter_Function, and association navigation facilities.
0033 (raised 30.x.01)
The generated HTML for «class» op (this : Class) is ColdFrame.Instances.Handle; should be just Handle.

17.i.02

0060 (raised 17.i.02)
Imported and renamed types can lead to excessively long source lines.

16.i.02

0058 (raised 16.i.02)
The installable Makefiles (Makefile-winnt, Makefile-unix) ought to make code generation depend on the user Makefile; because she can change macro values in it.

13.i.02

0057 (raised 10.i.02)
Please can the number of lines of code generated be reported (for example, in the header comments of the main domain package).

3.i.02

0051 (raised 2.i.02)
In inheritance trees, the parents may not have been processed when the grandchildren are processed, resulting in failed normalization.
0052 (raised 2.i.02)
The Makefiles expect a Case Exception File, and normalization fails if it's not present.
0053 (raised 2.i.02)
Model domains are extracted for all selected packages, not just those in the current diagram.
0061 (raised 23.i.02)
The supplied Windows makefile (Makefile-winnt) assumes software is installed on the D: drive; better if the default was C:. The customer bug report came after the problem was fixed.

11.xii.01

0046 (raised 28.xi.01)
The intended use of Association.Unlink isn't clear.
0048 (raised 11.xii.01)
Using escapable HTML entities (&, <, >) in the Documentation section prevents proper processing of annotations.
Use a newer TclXML release (tclxml-2.1theta works fine).

3.xii.01

0044 (raised 28.xi.01)
The Autonumber facility is implemented using plain Integers. This might cause integer overflow under heavy long-term use.

29.xi.01

0020 (raised 4.ix.01)
Cardinalities and multiplicities of the form 1..42 should be recognised (even if not implemented as specified: a warning would be sensible in that case).
0038 (raised 16.xi.01)
«abstract» procedure operations of active classes generate task entries. They probably shouldn't.
0042 (raised 28.xi.01)
Operations of [[imported]] types aren't visible.
0045 (raised 28.xi.01)
Multiplicity and cardinality processing in normalization only recognizes the n forms; the official * forms should be supported too.

19.xi.01

0041 (raised 19.xi.01)
[[callback]] doesn't work on plain types, you need to use a record.
An error is reported.

17.xi.01

0036 (raised 16.xi.01)
The domain Initialize procedure should be a child unit. As it is, a with of the domain package, probably for its types, calls in all the class packages that have «init» operations.
0040 (raised 17.xi.01)
«generated» and «navigation» procedure operations of active classes generate task entries.

16.xi.01

0030 (raised 13.x.01)
«finalize» operations shouldn't be inherited.
0034 (raised 1.xi.01)
«finalize» operations of active classes shouldn't be mapped to task entries.
0039 (raised 16.xi.01)
Tear_Down should clear out any registered Callbacks.

29.x.01

0028 (raised 12.x.01)
The WITH TYPE extension seems to trigger a lot of instability in GNAT. An alternative would be better.
0032 (raised 28.x.01)
With multiple inheritance, ColdFrame doesn't necessarily choose the right parent class to call inherited operations.

13.x.01

0029 (raised 12.x.01)
The generated Tear_Down procedure bodies have unused WITH clauses.

28.ix.01

0017 (raised 4.ix.01)
It would be good if the generated hash functions made some attempt to actually hash.

26.ix.01

0022 (raised 14.ix.01)
It should be easier to iterate over Collections.
0023 (raised 26.ix.01)
It would be helpful if discriminated record types could be generated.
0024 (raised 26.ix.01)
The generated domain Tear_Down procedure has a bad body if there are no Classes (just Types) in the domain.

14.ix.01

0021 (raised 4.ix.01)
Identifier normalization should match GLIDE's casing rules.

6.viii.01

0015 (raised 1.viii.01)
The generated code should include indications of the date of extraction and the revisions of the tools concerned (or perhaps of ColdFrame itself).

13.vii.01

0013 (raised 12.vii.01)
Initialize procedures should only be generated (and called by the Domain Initialize) where the Model specifies a parameterless «class» procedure Initialize.

7.vii.01

0011 (raised 27.vi.01)
Unlink operations on simple associations should null out referential attributes.

28.vi.01

0008 (raised 26.vi.01)
Class operations of active classes generate an entry and a matching (bad) body stub.

26.vi.01

0004 (raised 25.vi.01)
The Link function for a 1-(1:1) association is generated wrongly (uses the wrong end of the association).
0007 (raised 26.vi.01)
The error message generated when there's no concrete implementation of an abstract operation is garbled.

21.vi.01

0001 (raised 21.vi.01)
If an operation takes a parameter of the current class, or returns a value of the current class, CF generates a "with" of the current class (resulting in a circular dependency).
0002 (raised 21.vi.01)
Active Interfaces don't declare the type Instance before it's used.
0003 (raised 21.vi.01)
Associations with Singletons aren't supported properly.

Features

0105 (raised 23.vii.02)
If an enumeration type is imported or renamed, the enumeration literals aren't.
0136 (raised 26.xi.02)
The documentation gives an example of a «class event» without a payload, which can't actually be specified in a model.
0178 (raised 1.vii.03)
There's no way for ColdFrame to inform the application that an unhandled exception has been caught in the event dispatcher.
It does log an Error, this may be enough; after all, the application is now unstable.
0210 (raised Guy Fawkes' Day 2003)
A «type» can't have an attribute of an «access» (access-to-operation) type.
The problem is that all access-to-operation types are declared after all ordinary types. Note that the declarations are done in two tranches depending on the visibility, so consider declaring the access-to-operation types with public visibility (ie as operations of types with public visibility) and the using types with private visibility.
0235 (raised 12.ii.04)
Initial states can't have entry actions.
0244 (raised 15.iii.04)
Handling final states only works properly if the state is a UML final state in Rose (a black blob in a circle).
Seems reasonable! Though the original problem was that «final» on a non-blob state didn't work).
0245 (raised 19.iii.04)
There seems to be a problem tearing down instances of «active» classes.
This seems to be a problem with the -fstack-check compiler option.
0259 (raised 29.iv.04)
Now that unrecognised (and arbitrary) tagged values are passed through into the normalized file, it would be a Good Idea to use XML namespaces to distinguish ColdFrame's elements and attributes from others.
Made a start by prefixing each template with a 2-character namespace abbreviation to indicate the file it's declared in.
0296 (raised 1.iv.05)
If you paste commentary into the model, it's possible to get odd characters which cause problems at code generation. Typical offenders would be Windows "smart quotes".
0304 (raised 30.iv.05)
An association class that's not in the same package as the association (might be in a child or parent) can be missed during extraction.
This seems to be a Rose quirk; it happens if a package is moved in the model, or imported into a different model.
0330/1303319 (raised 24.ix.05)
If a state model has a completion transition from the initial state, the transition is performed synchronously during instance creation using a special creation event. Normally this won't cause a problem, but if the class is a singleton this transition, and any entry actions on the first state, will take place during domain initialization, after the domain {init} operation but before any class «init» operations have been called; which means that those entry actions had better not depend on any of the class initializations.
0347/1434319 (raised 18.ii.06)
Especially with large arrays (or perhaps just with large records), the performance of converting a serialized output stream to XML is very sluggish.
Some initial work done -- see ColdFrame.Unbounded_Strings -- but it would be even better to have a primitive Print operation.
0365/1664467 (raised 4.iii.07)
If an type is serializable in its source domain ({serializable-there}) it would be helpful if it could also be {serializable} immediately "here".

Rejected

10.vi.08

0016 (raised 6.viii.01)
It would be helpful if an association class could be automatically generated for many-to-many associations where the analyst hasn't provided one already.
I think it would just lead to confusion!
0049 (raised 27.xii.01)
It would be a good thing if project-specific configuration information (such as multiplicities) could be supplied in a separate document from the domain model.
I don't really see how to do that. Not sure whether other tools allow this, either.
0141 (raised 13.xii.02)
Ada doesn't allow functions to have in out or out parameters; ColdFrame could check.
This will show up so straightforwardly that it can be left. Maybe revisit this decision if normalize-rose.tcl ever gets rewritten?
0172 (raised 6.vi.03)
Would it be possible to specify the need for accessor operations by marking the attribute concerned? (perhaps by a stereotype, or just using visibility markup).
Don't want to encourage people to use accessors.
0198 (raised 11.ix.03)
Would it be possible to specify that operations should be inlined?
Not obvious from PowerPC experience that inlining is that useful - OK, this was with GNAT 3.16a1.
0284 (raised 28.x.04)
It would be useful to have support for modelling the test harness for a domain.
This might involve code generation options to allow conditional generation of the test support classes.
Not sure now what the actual intention was. Now, I think that using the generated unit test support is a better way to go.

3.v.08

0185 (raised 11.viii.03)
It can be very confusing to detect the error where an event is (mistakenly) Set on a Timer to fire after a zero delay. Perhaps a type Positive_Duration could be used instead of Natural_Duration?
What error is that?

26.ix.07

0360/1544860 (raised 22.viii.06)
It would be helpful to allow an action to be attached to stubbed operations (perhaps just procedures?).

19.i.05

0196 (raised 5.ix.03)
Now that state machines support actions on transitions, what about guards?
This seems very complex to implement.
0197 (raised 5.ix.03)
If you need an event action, you have to specify the matching (procedure) operation in the model. Would it be possible for the existence of the action to imply the operation?
This seems like a bad idea. Very un-obvious that there's an operation there!
0238 (raised 25.ii.04)
Would it be possible for operations named Is_boolean-attribute-name returning Boolean to be treated as «accessor»s?
No.
0273 (raised 22.vii.04)
It could be helpful to have a {stub} tag to ask ColdFrame to generate a default, non-separate, body.
You'd then have to change the model when implementation time came round.

3.xii.04

0067 (raised 5.iii.02)
If the action associated with a timed event sets the just-fired timer again, there's a race condition which can result in a Use_Error exception.
I think this must have been fixed!

10.vi.04

0232 (raised 10.ii.04)
In the standard Event Queue's Timer_Manager, only the first available event is immediately processed after a delay.

1.ii.04

0212 (raised Remembrance Day 2003)
Would it be possible for the task of an active class to have This of type Handle rather than access Instance?
No, unfortunately; there's a problem with ordering the declarations so as to allow controlling the storage pool for Handle.

3.i.04

0109 (raised 19.viii.02)
The error where a state has more than one exiting transition triggered by the same event (or drop-through) isn't detected.
Partially implemented. Replaced by bug #0206

13.ix.03

0199 (raised 11.ix.03)
Documentation on «protected» types isn't carried through into comments on the generated code.
Already done.

30.vii.03

0153 (raised 21.ii.03)
Putting [[callback]] on a non-«type» isn't recognised as an error.
Since [[callback]], or «callback», don't need «type», putting «callback» on something you didn't mean to be a «type» converts it to one automatically.

3.vii.03

0179 (raised 3.vii.03)
An «abstract» operation which happens to match the profile of an accessor has accessor (rather than dispatching) code generated for it.
This fault has been cleared since release 20030330.

27.ii.03

0155 (raised 21.ii.03)
Operations marked class in the class specification dialog aren't seen as such.
Operations can't be so marked -- in Rose <= 2001, anyway.

10.xii.02

0010 (raised 27.vi.01)
It would be helpful if active classes' procedures (which call the corresponding entries) trapped and reported exceptions.
Active class procedures no longer call the corresponding entries. In any case, you're better off using GNAT's features for reporting unhandled exceptions.
0012 (raised 12.vii.01)
It would be helpful if exception handlers could be automatically generated in stub subprograms.
You're better off using GNAT's features for reporting unhandled exceptions.
0080 (raised 1.v.02)
In multiple inheritance, would it be possible for an operation inherited from one parent to act as the concrete version of an abstract operation declared in the other parent?

17.viii.02

0055 (raised 8.i.02)
To create an instance of a child class (or any class that has a reference to another class in its identifier), you have to type convert the Handle to ColdFrame.Instances.Handle.
This problem was most tedious with inheritance hierarchies. The new inheritance support removes most of the problem.

10.vii.02

0043 (raised 28.xi.01)
It may be desirable to allow [[callback]]s to be targeted to specific instances of a particular class.
This can be done with the Counterpart facility, if required.

25.vi.02

0091 (raised 10.vi.02)
It would be helpful if an association with an unnamed role could be identified more precisely ("unnamed role in association" isn't very good!)
This only happens when the association itself isn't named. Not much we can do.

4.xii.01

0005 (raised 25.vi.01)
The translation for active classes fails when the [[max]] number of instances is specified.
Can't reproduce this.
0006 (raised 25.vi.01)
The translation for active classes requires users to jump through hoops involving .all'Unrestricted_Access to get a Handle.
A simple Handle (This) type conversion will do the trick, not so bad I think.


Simon Wright