diff --git a/SWIG/Examples/test-suite/constant_pointers.i b/SWIG/Examples/test-suite/constant_pointers.i index 386e7667c..4ff766bd7 100644 --- a/SWIG/Examples/test-suite/constant_pointers.i +++ b/SWIG/Examples/test-suite/constant_pointers.i @@ -113,6 +113,9 @@ int* const globalRet2() {return &GlobalInt;} %{ static int wxEVT_COMMAND_BUTTON_CLICKEDv; static int **wxEVT_COMMAND_BUTTON_CLICKEDp; +char *langs[] ={"Hello"}; + + %} @@ -121,6 +124,7 @@ static int **wxEVT_COMMAND_BUTTON_CLICKEDp; const int* wxEVENT_COMMAND_BUTTON_CLICKEDr = (int*) &wxEVT_COMMAND_BUTTON_CLICKEDv; const int* wxEVENT_COMMAND_BUTTON_CLICKEDp = (int*) *wxEVT_COMMAND_BUTTON_CLICKEDp; - + char **languages1 = &langs[0]; + char **languages2 = (char **)&langs[0]; } diff --git a/SWIG/Source/CParse/parser.y b/SWIG/Source/CParse/parser.y index 25c5e4143..9c7c8eedd 100644 --- a/SWIG/Source/CParse/parser.y +++ b/SWIG/Source/CParse/parser.y @@ -4440,6 +4440,20 @@ def_args : EQUAL definetype { $$.throwf = 0; } } + | EQUAL definetype LBRACKET expr RBRACKET { + $$ = $2; + if ($2.type == T_ERROR) { + Swig_warning(WARN_PARSE_BAD_DEFAULT,cparse_file, cparse_line, "Can't set default argument (ignored)\n"); + $$ = $2; + $$.val = 0; + $$.rawval = 0; + $$.bitfield = 0; + $$.throws = 0; + $$.throwf = 0; + } else { + $$.val = NewStringf("%s[%s]",$2.val,$4.val); + } + } | EQUAL LBRACE { skip_balanced('{','}'); $$.val = 0; @@ -5318,9 +5332,11 @@ expr : exprnum { $$ = $1; } } } | AND expr { + $$ = $2; $$.val = NewStringf("&%s",$2.val); } | STAR expr { + $$ = $2; $$.val = NewStringf("*%s",$2.val); } ;