summaryrefslogtreecommitdiff
path: root/TAO/TAO_IDL/be/be_visitor_field/field_ch.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/TAO_IDL/be/be_visitor_field/field_ch.cpp')
-rw-r--r--TAO/TAO_IDL/be/be_visitor_field/field_ch.cpp30
1 files changed, 17 insertions, 13 deletions
diff --git a/TAO/TAO_IDL/be/be_visitor_field/field_ch.cpp b/TAO/TAO_IDL/be/be_visitor_field/field_ch.cpp
index ea9cec530ae..dbc90dd7d4d 100644
--- a/TAO/TAO_IDL/be/be_visitor_field/field_ch.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_field/field_ch.cpp
@@ -325,26 +325,30 @@ be_visitor_field_ch::visit_sequence (be_sequence *node)
be_field::narrow_from_decl (this->ctx_->node ());
node->field_node (member_node);
- be_visitor_context ctx (*this->ctx_);
- ctx.node (node);
-
- // First generate the sequence declaration.
- be_visitor_sequence_ch visitor (&ctx);
-
- if (node->accept (&visitor) == -1)
+ // This was already generated in the corresponding valuetype class.
+ if (this->ctx_->state () != TAO_CodeGen::TAO_VALUETYPE_OBV_CH)
{
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_field_ch::"
- "visit_sequence - "
- "codegen failed\n"),
- -1);
+ be_visitor_context ctx (*this->ctx_);
+ ctx.node (node);
+
+ // First generate the sequence declaration.
+ be_visitor_sequence_ch visitor (&ctx);
+
+ if (node->accept (&visitor) == -1)
+ {
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "(%N:%l) be_visitor_field_ch::"
+ "visit_sequence - "
+ "codegen failed\n"),
+ -1);
+ }
}
// If we are being reused by valutype, this would get generated
// in the private section of the OBV_xx class, so we must
// generate the typedef for that case elsewhere.
AST_Decl::NodeType snt = this->ctx_->scope ()->node_type ();
-
+
if (snt != AST_Decl::NT_valuetype && snt != AST_Decl::NT_eventtype)
{
// Generate the anonymous sequence member typedef.