summaryrefslogtreecommitdiff
path: root/TAO/TAO_IDL/be/be_visitor_interface/tie_sh.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/TAO_IDL/be/be_visitor_interface/tie_sh.cpp')
-rw-r--r--TAO/TAO_IDL/be/be_visitor_interface/tie_sh.cpp15
1 files changed, 12 insertions, 3 deletions
diff --git a/TAO/TAO_IDL/be/be_visitor_interface/tie_sh.cpp b/TAO/TAO_IDL/be/be_visitor_interface/tie_sh.cpp
index f341f2f2c55..41262e9ddb8 100644
--- a/TAO/TAO_IDL/be/be_visitor_interface/tie_sh.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_interface/tie_sh.cpp
@@ -45,7 +45,7 @@ be_visitor_interface_tie_sh::visit_interface (be_interface *node)
static char namebuf [NAMEBUFSIZE];
static char tiename [NAMEBUFSIZE];
- if (node->imported ())
+ if (node->imported () || node->is_abstract ())
{
return 0;
}
@@ -86,8 +86,8 @@ be_visitor_interface_tie_sh::visit_interface (be_interface *node)
// Now generate the class definition.
os->indent ();
- *os << "// TAO_IDL - Generated from "
- << __FILE__ << ":" << __LINE__ << be_nl << be_nl << be_nl;
+ *os << "// TAO_IDL - Generated from" << be_nl
+ << "// " << __FILE__ << ":" << __LINE__ << be_nl << be_nl;
*os << "// TIE class: Refer to CORBA v2.2, Section 20.34.4" << be_nl;
*os << "template <class T>" << be_nl;
@@ -156,6 +156,15 @@ be_visitor_interface_tie_sh::method_helper (be_interface *,
be_interface *node,
TAO_OutStream *os)
{
+ // Any methods from abstract parents have already been
+ // "added" to the derived interface scope by the overridden
+ // visit_scope() method in be_visitor_interface, so we can skip
+ // this base interface, if it is abstract.
+ if (node->is_abstract ())
+ {
+ return 0;
+ }
+
be_visitor_context ctx;
ctx.state (TAO_CodeGen::TAO_INTERFACE_TIE_SH);
ctx.stream (os);