diff --git a/Examples/test-suite/cpp11_template_double_brackets.i b/Examples/test-suite/cpp11_template_double_brackets.i index bc27664fc..981ff1e74 100644 --- a/Examples/test-suite/cpp11_template_double_brackets.i +++ b/Examples/test-suite/cpp11_template_double_brackets.i @@ -45,3 +45,7 @@ public: }; %} +// Test shifts are still working +%inline %{ +int shift_init1 = 4 << 2 >> 1; +%} diff --git a/Source/Swig/scanner.c b/Source/Swig/scanner.c index 6147357fe..178e7626c 100644 --- a/Source/Swig/scanner.c +++ b/Source/Swig/scanner.c @@ -877,15 +877,17 @@ static int look(Scanner *s) { break; case 60: /* shift operators */ - brackets_increment(s); - if ((c = nextchar(s)) == 0) + if ((c = nextchar(s)) == 0) { + brackets_increment(s); return SWIG_TOKEN_LESSTHAN; + } if (c == '<') state = 240; else if (c == '=') return SWIG_TOKEN_LTEQUAL; else { retract(s, 1); + brackets_increment(s); return SWIG_TOKEN_LESSTHAN; } break; @@ -1340,7 +1342,6 @@ static int look(Scanner *s) { break; case 240: /* LSHIFT, LSEQUAL */ - brackets_increment(s); if ((c = nextchar(s)) == 0) return SWIG_TOKEN_LSHIFT; else if (c == '=')