1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

Bug 460080 - Template id inside special cast expression forming '>>'

Change-Id: I949cef0c6774c4c90edce921c2cc99f514ffea87
Signed-off-by: Nathan Ridge <zeratul976@hotmail.com>
This commit is contained in:
Nathan Ridge 2015-02-28 19:13:05 -05:00 committed by Sergey Prigogin
parent 8607866e33
commit ce34d2d48e
2 changed files with 12 additions and 1 deletions

View file

@ -11076,4 +11076,10 @@ public class AST2CPPTests extends AST2TestBase {
public void testASTCopyForNoexceptDefault_bug456207() throws Exception {
parseAndCheckBindings();
}
// template <typename> struct waldo { waldo(int); };
// auto x = static_cast<waldo<int>>(0);
public void testTemplateIdInsideCastOperator_460080() throws Exception {
parseAndCheckBindings();
}
}

View file

@ -1957,7 +1957,12 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser {
final int optype= consume().getType();
consume(IToken.tLT);
final IASTTypeId typeID = typeId(DeclarationOptions.TYPEID);
consumeOrEOC(IToken.tGT);
final IToken gt = LA(1);
if (gt.getType() == IToken.tGT || gt.getType() == IToken.tGT_in_SHIFTR) {
consume();
} else if (gt.getType() != IToken.tEOC) {
throwBacktrack(gt);
}
consumeOrEOC(IToken.tLPAREN);
IASTExpression operand= null;
if (LT(1) != IToken.tEOC) {