--- ./Source/CParse/parser.c.orig 2014-08-26 12:24:53.381788068 +0000 +++ ./Source/CParse/parser.c 2014-08-26 12:36:45.700287073 +0000 @@ -1065,7 +1065,7 @@ static Node *nested_forward_declaration( } } - if (!GetFlag(currentOuterClass, "nested")) { + if (!currentOuterClass || !GetFlag(currentOuterClass, "nested")) { if (nn && Equal(nodeType(nn), "classforward")) { Node *n = nn; SWIG_WARN_NODE_BEGIN(n); @@ -7562,6 +7562,8 @@ yyreduce: } else if (nscope_inner) { /* this is tricky */ /* we add the declaration in the original namespace */ + if (Strcmp(nodeType(nscope_inner), "class") == 0 && cparse_cplusplus && ignore_nested_classes && !GetFlag((yyval.node), "feature:flatnested")) + (yyval.node) = nested_forward_declaration((yyvsp[(1) - (9)].id), (yyvsp[(2) - (9)].id), (yyvsp[(3) - (9)].str), Copy((yyvsp[(3) - (9)].str)), (yyvsp[(9) - (9)].node)); appendChild(nscope_inner, (yyval.node)); Swig_symbol_setscope(Getattr(nscope_inner, "symtab")); Delete(Namespaceprefix);