[omniORB] IDL formal parameter name clash

Brian Wallis brian.wallis at ot.com.au
Tue May 3 21:36:15 BST 2005


OK, I'm convinced.

I'll see what I can do about reporting it as a bug (they don't make it easy to 
do that though).

Many thanks for the time taken to explain this.

brian...

On Tuesday 03 May 2005 7:28 pm, Duncan Grisby wrote:
> On Tuesday 3 May, Brian Wallis wrote:
> > On Friday 29 April 2005 9:00 pm, Duncan Grisby <duncan at grisby.org> wrote:
> > > omniidl is correct. Using the module name introduces it into the scope
> > > of the operation parameters. See section 3.15.2 of the CORBA 2.6 spec.
> > > It says:
> >
> > Hmm. I did read that section and wondered if it applied to formal
> > parameter names. I'm not convinced that it does.
>
> It definitely does. See the example invalid IDL in section 3.2.3:
>
>   void doit (
>     in Foo foo // error: Foo and foo collide and refer to
>                  different things
>   );
>
> If that's illegal, the IDL you quoted must also be illegal since there
> aren't any other rules that would make this example illegal.
>
> > Does the formal parameter name introduce a name into the scope that
> > can be used for anything? I thought formal parameter names are just a
> > placeholder in the IDL.
>
> The name can't be used for anything, but the IDL spec says the names are
> introduced, so that's what omniidl does.
>
> > I've tried a number of other IDL compilers (TAO 1.4.4, JDK 1.4.2 and
> > 1.5 idlj, fnorb fnidl 1.3) that are happy with this. Orbix 2000 1.2.3
> > on the other hand gets an error.
>
> Like I said, omniidl is much more strict about adhering to the spec than
> most IDL compilers.
>
> > But on testing, If I modify the IDL like so:
> >
> > module aSAP {
> >   typedef long ASAP_T;
> > };
> >
> > interface Test {
> >   void getASAP(
> >     in string aSAPName,
> >     out ::aSAP::ASAP_T aSAP);
> > };
> >
> > ie: explicitly scope the aSAP module to global scope then everyone is
> > happy including omniORB. I suppose that in this case the aSAP module name
> > is not introduced into that scope?
>
> Yes. Quoting a bit more of section 3.15.2:
>
>   A qualified name of the form "::X::Y::Z" does not cause "X" to be
>   introduced, but a qualified name of the form "X::Y::Z" does.
>
> > All somewhat beside the point since I shouldn't need to modify IDL that
> > is part of a published standard (TMF814). Perhaps I need to bug report
> > this to the TMF.
>
> It's definitely a bug in their IDL. You should file a bug report.
>
> Cheers,
>
> Duncan.

-- 
brian wallis...
Open Telecommunications
http://www.ot.com.au/



More information about the omniORB-list mailing list