Bug 3949

Summary: TAO_IDL typeprefix support is not compliant to CORBA 3.1 spec
Product: TAO Reporter: Martin Corino <mcorino>
Component: IDL CompilerAssignee: DOC Center Support List (internal) <tao-support>
Status: ASSIGNED ---    
Severity: normal    
Priority: P3    
Version: 2.0.0   
Hardware: All   
OS: Linux   

Description Martin Corino 2011-01-24 08:13:44 CST
The 'typeprefix' support is non-compliant.

TAO_IDL will accept typeprefix for a scoped name *before* the scoped name is declared, i.e.:

typeprefix Components "org.omg";

module Components
{
  ...
};

The spec however (formal/2008-01-04) clearly states on page 78 (par. 7.15.2) that:

"It must denote a previously-declared name of one of the following IDL constructs:"

Therefor the above construct should be illegal and should be declared as:

module Components
{
  typeprefix Components "org.omg";

  ...
};

or

module Components
{
  ...
};
 Components "org.omg";

CIAO currently hosts a number of IDL files with the illegal form which cause errors when compiled with compliant IDL compilers.
Comment 1 Jeff Parsons 2011-01-24 09:52:28 CST
This restriction I believe is new, don't remember seeing it in 3.0, but I do remember ranting about the difficulty of implementing typeprefix without it. No time right now, but it will be a welcome change.