Hi
Sorry I didn't see your reply earlier. GMail isn't very good at telling me I've got new email, since I switched to having different categories for my Inbox :-/
It looks like this code:
NEW [ NIL, NIL, 'name', CALLBACK func() ] : classnode
is being used to create a new object.
Because you are using the "OPTAMIGAE" switch, I think (I may be wrong) it's automatically making all objects be CLASSes (i.e. inherit from the "class" object).
This unfortunately means you run into a PortablE limitation, where it doesn't allow arrays/lists of class objects. In reality you are only creating a single new class object, so you shouldn't really get this error, but I don't have time to fix PortablE at the moment, so the best I can suggest is some work-arounds.
The simplest work-around is (probably) to get rid of that OPTAMIGAE switch, and instead add OPT AMIGAE at the top of each module *except* for the "list.e" module (which defines the parent "node" object). With luck that will solve your problem (you will also need to tweak the "list.e" module to use PortablE syntax, e.g. get rid of EXPORT).
But if that doesn't solve your problem, then you might need to do small rewriting of your code. Looking at the definition of "classnode" I see:
EXPORT OBJECT classnode OF node
newf : LONG
ENDOBJECT
While "node" is defined in the "list.e" module as:
OBJECT node
next : PTR TO node
prev : PTR TO node
name : PTR TO CHAR
ENDOBJECT
So what I suggest is that you change how new objects (like "classnode") are created. Let's have a procedure call do the job instead. In the "classnode.e" module add this:
PROC new_classnode(next:PTR TO node, prev:PTR TO node, name:PTR TO CHAR, newf:LONG) RETURNS self:PTR TO classnode
NEW self
self.next := next
self.prev := prev
self.name := name
self.newf := newf
ENDPROC
Then replace this code:
NEW [ NIL, NIL, 'name', CALLBACK func() ] : classnode
With this:
new_classnode( NIL, NIL, 'name', CALLBACK func() )
The above code is untested, but should work (!). Let me know how you get on!