mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Patch for Victor Mozgin.
Fixed PR 39532 : Parser fails on fully-qualified class names.
This commit is contained in:
parent
57c348fffa
commit
7b4de80105
5 changed files with 21 additions and 19 deletions
|
@ -1,3 +1,6 @@
|
|||
2003-07-30 Victor Mozgin
|
||||
Moved testBug39532() from ASTFailedTests.java to QuickParseASTTests.java.
|
||||
|
||||
2003-07-29 John Camelon
|
||||
Updated QuickParseASTTests for pointer to function updates.
|
||||
Updated CompleteParseASTTests for typedef work.
|
||||
|
|
|
@ -90,10 +90,6 @@ public class ASTFailedTests extends BaseASTTest
|
|||
{
|
||||
assertCodeFailsParse("class AString { operator char const *() const; };");
|
||||
}
|
||||
public void testBug39532() throws Exception
|
||||
{
|
||||
assertCodeFailsParse("class N1::N2::B : public A {};");
|
||||
}
|
||||
public void testBug39535() throws Exception
|
||||
{
|
||||
assertCodeFailsParse("namespace bar = foo;");
|
||||
|
|
|
@ -1751,4 +1751,10 @@ public class QuickParseASTTests extends BaseASTTest
|
|||
assertEquals( typedef.getName(), "life");
|
||||
|
||||
}
|
||||
|
||||
public void testBug39532() throws Exception
|
||||
{
|
||||
parse("class N1::N2::B : public A {};");
|
||||
assertTrue( quickParseCallback.getCompilationUnit().getDeclarations().hasNext() );
|
||||
}
|
||||
}
|
|
@ -1,3 +1,6 @@
|
|||
2003-07-30 Victor Mozgin
|
||||
Fixed PR 39532 : Parser fails on fully-qualified class names.
|
||||
|
||||
2003-07-29 John Camelon
|
||||
Updated AST to better represent pointers to functions/methods.
|
||||
Implemented typedef declaration/x-ref infrastructure.
|
||||
|
|
|
@ -1563,21 +1563,15 @@ public class Parser implements IParser
|
|||
*/
|
||||
protected ITokenDuple className() throws Backtrack
|
||||
{
|
||||
if (LT(1) == IToken.tIDENTIFIER)
|
||||
{
|
||||
if (LT(2) == IToken.tLT)
|
||||
{
|
||||
return new TokenDuple(LA(1), templateId());
|
||||
ITokenDuple duple = name();
|
||||
IToken last = duple.getLastToken();
|
||||
if (LT(1) == IToken.tLT) {
|
||||
last = consumeTemplateParameters(duple.getLastToken());
|
||||
}
|
||||
else
|
||||
{
|
||||
IToken t = identifier();
|
||||
return new TokenDuple(t, t);
|
||||
}
|
||||
}
|
||||
else
|
||||
throw backtrack;
|
||||
|
||||
return new TokenDuple(duple.getFirstToken(), last);
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse a template-id, according to the ANSI C++ spec.
|
||||
*
|
||||
|
@ -1590,8 +1584,8 @@ public class Parser implements IParser
|
|||
*/
|
||||
protected IToken templateId() throws Backtrack
|
||||
{
|
||||
IToken first = consume(IToken.tIDENTIFIER);
|
||||
IToken last = consumeTemplateParameters(first);
|
||||
ITokenDuple duple = name();
|
||||
IToken last = consumeTemplateParameters(duple.getLastToken());
|
||||
return last;
|
||||
}
|
||||
/**
|
||||
|
|
Loading…
Add table
Reference in a new issue