mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-23 22:52:11 +02:00
Bug 534813 - ASTWriter swaps noexcept and pure virtual specifier
Fix and test Change-Id: I14088e69aed829940fb1e9f5197dedf18d9bb7a5 Signed-off-by: Hansruedi Patzen <hansruedi.patzen@hsr.ch> Signed-off-by: Thomas Corbat <tcorbat@hsr.ch>
This commit is contained in:
parent
7b53e75fb2
commit
5c5ce995f6
3 changed files with 32 additions and 4 deletions
|
@ -1018,4 +1018,31 @@ public class ReplaceTests extends ChangeGeneratorTest {
|
|||
}
|
||||
});
|
||||
}
|
||||
|
||||
//struct FooInterface
|
||||
//{
|
||||
// virtual void foo() throw (int);
|
||||
//};
|
||||
|
||||
//struct FooInterface
|
||||
//{
|
||||
// virtual void foo() throw (int) = 0;
|
||||
//};
|
||||
public void testPureVirtualFunction() throws Exception {
|
||||
compareResult(new ASTVisitor() {
|
||||
{
|
||||
shouldVisitDeclarators = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int visit(IASTDeclarator declarator) {
|
||||
if (declarator instanceof ICPPASTFunctionDeclarator) {
|
||||
ICPPASTFunctionDeclarator newDeclarator = (ICPPASTFunctionDeclarator) declarator.copy(CopyStyle.withLocations);
|
||||
newDeclarator.setPureVirtual(true);
|
||||
addModification(null, ModificationKind.REPLACE, declarator, newDeclarator);
|
||||
}
|
||||
return PROCESS_ABORT;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -56,6 +56,7 @@ class TestClass
|
|||
int alpha;
|
||||
TestClass(int a);
|
||||
virtual void pure() = 0;
|
||||
virtual void func() noexcept = 0;
|
||||
};
|
||||
|
||||
TestClass::TestClass(int a)
|
||||
|
|
|
@ -170,10 +170,6 @@ public class DeclaratorWriter extends NodeWriter {
|
|||
scribe.printSpace();
|
||||
scribe.print(Keywords.MUTABLE);
|
||||
}
|
||||
writeVirtualSpecifiers(funcDec);
|
||||
if (funcDec.isPureVirtual()) {
|
||||
scribe.print(PURE_VIRTUAL);
|
||||
}
|
||||
writeExceptionSpecification(funcDec, funcDec.getExceptionSpecification(), funcDec.getNoexceptExpression());
|
||||
writeAttributes(funcDec, EnumSet.of(SpaceLocation.BEFORE));
|
||||
if (funcDec.getTrailingReturnType() != null) {
|
||||
|
@ -182,6 +178,10 @@ public class DeclaratorWriter extends NodeWriter {
|
|||
scribe.printSpace();
|
||||
funcDec.getTrailingReturnType().accept(visitor);
|
||||
}
|
||||
writeVirtualSpecifiers(funcDec);
|
||||
if (funcDec.isPureVirtual()) {
|
||||
scribe.print(PURE_VIRTUAL);
|
||||
}
|
||||
}
|
||||
|
||||
public void writeVirtualSpecifiers(ICPPASTFunctionDeclarator funcDec) {
|
||||
|
|
Loading…
Add table
Reference in a new issue