Avoid parse errors for C++ attributes
Just ignore anything in between [[ and ]] in the scanner, which is better that failing with a parse error. Fixes #1158 Fixes #2286
This commit is contained in:
parent
5a96a39aa4
commit
d3759a9b36
6 changed files with 86 additions and 4 deletions
|
|
@ -354,6 +354,18 @@ static int yylook(void) {
|
|||
case SWIG_TOKEN_ELLIPSIS:
|
||||
return ELLIPSIS;
|
||||
|
||||
case SWIG_TOKEN_LLBRACKET:
|
||||
do {
|
||||
tok = Scanner_token(scan);
|
||||
} while ((tok != SWIG_TOKEN_RRBRACKET) && (tok > 0));
|
||||
if (tok <= 0) {
|
||||
Swig_error(cparse_file, cparse_line, "Unbalanced double brackets, missing closing (']]'). Reached end of input.\n");
|
||||
}
|
||||
break;
|
||||
|
||||
case SWIG_TOKEN_RRBRACKET:
|
||||
return RRBRACKET;
|
||||
|
||||
/* Look for multi-character sequences */
|
||||
|
||||
case SWIG_TOKEN_RSTRING:
|
||||
|
|
|
|||
|
|
@ -1613,6 +1613,7 @@ static String *add_qualifier_to_declarator(SwigType *type, SwigType *qualifier)
|
|||
%token <type> TYPE_INT TYPE_UNSIGNED TYPE_SHORT TYPE_LONG TYPE_FLOAT TYPE_DOUBLE TYPE_CHAR TYPE_WCHAR TYPE_VOID TYPE_SIGNED TYPE_BOOL TYPE_COMPLEX TYPE_TYPEDEF TYPE_RAW TYPE_NON_ISO_INT8 TYPE_NON_ISO_INT16 TYPE_NON_ISO_INT32 TYPE_NON_ISO_INT64
|
||||
%token LPAREN RPAREN COMMA SEMI EXTERN INIT LBRACE RBRACE PERIOD ELLIPSIS
|
||||
%token CONST_QUAL VOLATILE REGISTER STRUCT UNION EQUAL SIZEOF MODULE LBRACKET RBRACKET
|
||||
%token LLBRACKET RRBRACKET /* C++11 Attribute specifier sequence */
|
||||
%token BEGINFILE ENDOFFILE
|
||||
%token ILLEGAL CONSTANT
|
||||
%token NAME RENAME NAMEWARN EXTEND PRAGMA FEATURE VARARGS
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue