[omniORB] Identifier `ValueType' clashes with keyword `valuetype'

Gary D. Duzan gdd0@gte.com
Fri, 23 Feb 2001 09:42:50 -0500


In Message <0vofvth3tg.fsf@cs.uni-magdeburg.de> ,
   Roland Jesse <jesse@mail.CS.Uni-Magdeburg.De> wrote:

=>Hi,
=>
=>the following idl extract is compatible with current Mico but
=>obviously not with omniORB:
=>
=>module Query {
=>   enum ValueType {
=>	  TypeBoolean, TypeChar, TypeOctet, TypeShort, TypeUShort, 
=>	  TypeLong, TypeULong, TypeFloat, TypeDouble, TypeString, 
=>	  TypeObject, TypeAny, TypeSmallInt, TypeInteger, TypeReal, 
=>	  TypeDoublePrecision, TypeCharacter, TypeDecimal, TypeNumeric,
=>	  TypeTuple, TypeNull
=>   };
=>};
=>
=>"omniidl -bcxx vt.idl" complains:
=>vt.idl:2: Identifier `ValueType' clashes with keyword `valuetype'
=>omniidl: 1 error.
=>
=>As "ValueType" is used inside the Query module it should never clash
=>with any other valuetype definitions (which are a "Missing feature"
=>regarding the User's Guide section 1.1.4 at least in omniORB 3.0.2
=>anyway).
=>
=>Anyway around this error without renaming the enum?
=>
=>Pointers are appreciated.
=>
=>        Roland
=>

   From the CORBA 2.3.1 spec:

>From Section 3.2.3: Identifiers

  When comparing two identifiers to see if they collide:
    Upper- and lower-case letters are treated as the same letter.
    Table 3-2 on page 3-4 defines the equivalence mapping of upper-
    and lower-case letters.

>From Section 3.2.4: Keywords

  Keywords must be written exactly as shown in the above list.
  Identifiers that collide with keywords (see Section 3.2.3,
  "Identifiers," on page 3-6) are illegal. For example, "boolean"
  is a valid keyword; "Boolean" and "BOOLEAN" are illegal identifiers.

"valuetype" appears in table 3-6, so omniidl is right and MICO is
being lax in enforcing this rule. In these cases, when in doubt
omniidl is usually right. :-)

					Gary Duzan
					Verizon Laboratories