From 078fad738de4b2057f88604e25b4e018eaf12e5c Mon Sep 17 00:00:00 2001 From: cxl Date: Wed, 28 Nov 2012 18:23:45 +0000 Subject: [PATCH] ide: Fixed parsing >> as nested template brackets (Bug #361) git-svn-id: svn://ultimatepp.org/upp/trunk@5586 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/CppBase/Parser.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/uppsrc/CppBase/Parser.cpp b/uppsrc/CppBase/Parser.cpp index 7d3f314bb..38696566e 100644 --- a/uppsrc/CppBase/Parser.cpp +++ b/uppsrc/CppBase/Parser.cpp @@ -300,6 +300,14 @@ String Parser::TemplateParams(String& param) } } else + if(Key(t_shr) && level >= 2) { + level -= 2; + if(level <= 0) { + ScAdd(param, id); + break; + } + } + else if(Key('<')) level++; else @@ -517,6 +525,11 @@ int Parser::RPtr() n++; } else + if(t == t_shr && tlevel >= 2) { + tlevel -= 2; + n++; + } + else if(t == t_dblcolon || lex.IsId(n) || t == ',' && tlevel > 0) n++; else @@ -791,6 +804,9 @@ String Parser::Tparam(int& q) level++; if(lex[q] == '>') level--; + else + if(lex[q] == t_shr && level >= 2) + level -= 2; q++; } return String(p, lex.Pos(q));