mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +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;
|
int alpha;
|
||||||
TestClass(int a);
|
TestClass(int a);
|
||||||
virtual void pure() = 0;
|
virtual void pure() = 0;
|
||||||
|
virtual void func() noexcept = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
TestClass::TestClass(int a)
|
TestClass::TestClass(int a)
|
||||||
|
|
|
@ -170,10 +170,6 @@ public class DeclaratorWriter extends NodeWriter {
|
||||||
scribe.printSpace();
|
scribe.printSpace();
|
||||||
scribe.print(Keywords.MUTABLE);
|
scribe.print(Keywords.MUTABLE);
|
||||||
}
|
}
|
||||||
writeVirtualSpecifiers(funcDec);
|
|
||||||
if (funcDec.isPureVirtual()) {
|
|
||||||
scribe.print(PURE_VIRTUAL);
|
|
||||||
}
|
|
||||||
writeExceptionSpecification(funcDec, funcDec.getExceptionSpecification(), funcDec.getNoexceptExpression());
|
writeExceptionSpecification(funcDec, funcDec.getExceptionSpecification(), funcDec.getNoexceptExpression());
|
||||||
writeAttributes(funcDec, EnumSet.of(SpaceLocation.BEFORE));
|
writeAttributes(funcDec, EnumSet.of(SpaceLocation.BEFORE));
|
||||||
if (funcDec.getTrailingReturnType() != null) {
|
if (funcDec.getTrailingReturnType() != null) {
|
||||||
|
@ -182,6 +178,10 @@ public class DeclaratorWriter extends NodeWriter {
|
||||||
scribe.printSpace();
|
scribe.printSpace();
|
||||||
funcDec.getTrailingReturnType().accept(visitor);
|
funcDec.getTrailingReturnType().accept(visitor);
|
||||||
}
|
}
|
||||||
|
writeVirtualSpecifiers(funcDec);
|
||||||
|
if (funcDec.isPureVirtual()) {
|
||||||
|
scribe.print(PURE_VIRTUAL);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void writeVirtualSpecifiers(ICPPASTFunctionDeclarator funcDec) {
|
public void writeVirtualSpecifiers(ICPPASTFunctionDeclarator funcDec) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue