[omniORB] IDL name clashes]

Matthias Klein Matthias@mutam.de
Wed, 6 Sep 2000 10:45:36 +0200


Hi Richard,

quoting from Henning/Vinoski, Chapter 4.18.3:

"A name in a nested scope cannot be the same as a name in its immediate
enclosing scope". Their example:

module CCS {
....
    module CCS {
   }
}

won't compile. So i think omniidl is right

Regards
Matthias

----- Original Message -----
From: "Richard Gruet" <rgruet@ina.fr>
To: <omniorb-list@uk.research.att.com>
Sent: Wednesday, September 06, 2000 11:10 AM
Subject: [Fwd: Re: [omniORB] IDL name clashes]


>
>
> -------- Original Message --------
> Subject: Re: [omniORB] IDL name clashes
> Date: Wed, 06 Sep 2000 10:08:35 +0100
> From: Richard Gruet <rgruet@ina.fr>
> Reply-To: rgruet@ina.fr
> Organization: INA
> To: Craig Rodrigues <rodrigc@mediaone.net>
> References: <39B523AE.447C307D@ina.fr>
> <20000905122617.A2498@mediaone.net>
>
> Craig,
>
> OK, I already knew that rule, but it does not clarify my point. Is it or
> not
> allowed in IDL to use SAME identifiers (or differing only by case) in
> DIFFERENT
> scopes ? I could interpret the section 3.2.3 of the CORBA 2.3
> specification that
> you quote as concerning only identifiers in the SAME scope. And your
> example
> doesn't illustrate my specific question.
>
> What do you think ? Any other advice (eg from the omniidl gurus) ?
>
> Richard Gruet
>
> Craig Rodrigues wrote:
>
> > On Tue, Sep 05, 2000 at 05:47:42PM +0100, Richard Gruet wrote:
> > > Hi omniORBers,
> > >
> > > When compiling the following IDL:
> > >
> > > module m {
> > >     interface M {
> > > };
> > > };
> >
> > Your IDL is buggy, omniidl is doing the right thing.
> >
> > (Other IDL compilers like JavaIDL and Visibroker 3.3 don't pick up this
bug.)
> >
> >  From section 3.2.3 of the CORBA 2.3 specification:
> >
> >  " When comparing two identifiers to see if they collide:
> >    Upper- and lower-case letters are treated as the same letter.   Table
3-2
> > +defines the equivalence mapping of upper- and lower-case letters.   All
> > +characters are significant.  Identifiers that differ only in case
collide,
> >  and will yield a compilation error under certain circumstances.   An
> > +identifier for a given definition must be spelled identically   (e.g.,
with
> > +respect to case) throughout a specification.
> >
> >  module M {
> >    typedef long Foo;
> >    const long thing = 1;
> >    interface thing { // error: reuse of identifier
> >    void doit (
> >        in Foo foo // error: Foo and foo collide and refer to
> >                    // different things
> >              );
> >    readonly attribute long Attribute; // error: Attribute collides with
> > // keyword attribute
> >    };
> >  };
> > --
> > Craig Rodrigues
> > http://www.gis.net/~craigr
> > rodrigc@mediaone.net
>