summaryrefslogtreecommitdiff
path: root/TAO/TAO_IDL/be/be_argument.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/TAO_IDL/be/be_argument.cpp')
-rw-r--r--TAO/TAO_IDL/be/be_argument.cpp9
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);