[omniORB] IDL formal parameter name clash
Duncan Grisby
duncan at grisby.org
Tue May 3 11:28:11 BST 2005
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.
--
-- Duncan Grisby --
-- duncan at grisby.org --
-- http://www.grisby.org --
More information about the omniORB-list
mailing list