[omniORB] Strange code produced by omniidl2

David Riddoch djr@uk.research.att.com
Tue, 13 Jul 1999 15:49:27 +0100 (GMT)


Hi,


This is definately an omniidl2 problem.  The following also fails:


module a {
  interface foo;
};

module b {
  interface bar;
};


module a {
  interface foo {
    attribute b::bar a;
  };
};


For some reason when a module is reopened the contents all get merged into
one -- which gets processed at the position that the first opening
appears.  This in the above example we get the code for a forward
declaration of foo, followed by the full declaration of foo, followed by
module b and bar.

In Nick's original example the problem occurs because the ap module is
opened in odd.idl.  This causes this module to be dragged to the beginning
of the output.  The problem goes away if we don't include odd.idl.

I don't have a solution yet -- it may actually be quite a big problem!
For the moment please try to get by rearranging you declarations to avoid
this bug.

Thanks,
David