diff options
Diffstat (limited to 'TAO/TAO_IDL/be/be_argument.cpp')
-rw-r--r-- | TAO/TAO_IDL/be/be_argument.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/TAO/TAO_IDL/be/be_argument.cpp b/TAO/TAO_IDL/be/be_argument.cpp index e3485d1758f..1aafd25caa1 100644 --- a/TAO/TAO_IDL/be/be_argument.cpp +++ b/TAO/TAO_IDL/be/be_argument.cpp @@ -23,6 +23,7 @@ #include "be_type.h" #include "be_visitor.h" #include "nr_extern.h" +#include "global_extern.h" ACE_RCSID (be, be_argument, @@ -56,7 +57,13 @@ be_argument::be_argument (AST_Argument::Direction d, // If there have been previous errors, dcl may be 0, // and we don't want to crash, so we check for non-zero. - if (dcl != 0 && !dcl->is_local ()) + // Also, we don't want to set the bit if the operation is + // declared in an included file UNLESS the enclosing + // interface is abstract, in which case we regenerate the + // operation. + if (dcl != 0 + && !dcl->is_local () + && (idl_global->in_main_file () || dcl->is_abstract ())) { be_type *bt = be_type::narrow_from_decl (ft); bt->seen_in_operation (I_TRUE); |