1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-23 22:52:11 +02:00

Bug 414501: modification of base specifiers now works using an

ASTRewrite

Bug: https://bugs.eclipse.org/bugs/show_bug.cgi?id=414501
Change-Id: Ide93fa5f988f1121fddfed9af036cbac7518fe29
Signed-off-by: Simon Taddiken <simon.taddiken@gmail.com>
Reviewed-on: https://git.eclipse.org/r/15178
Reviewed-by: Sergey Prigogin <eclipse.sprigogin@gmail.com>
IP-Clean: Sergey Prigogin <eclipse.sprigogin@gmail.com>
Tested-by: Sergey Prigogin <eclipse.sprigogin@gmail.com>
This commit is contained in:
Simon Taddiken 2013-10-02 10:21:21 -07:00 committed by Sergey Prigogin
parent a0a2059fdd
commit e51a76571e
3 changed files with 31 additions and 1 deletions

View file

@ -30,6 +30,7 @@ import org.eclipse.cdt.core.dom.ast.IASTStatement;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNamespaceDefinition;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateParameter;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier.ICPPASTBaseSpecifier;
import org.eclipse.cdt.core.dom.ast.gnu.IGNUASTCompoundStatementExpression;
import org.eclipse.cdt.internal.core.dom.rewrite.ASTLiteralNode;
import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
@ -139,6 +140,12 @@ public class ASTWriterVisitor extends ASTVisitor {
scribe.print(lit.getRawSignature());
}
@Override
public int visit(ICPPASTBaseSpecifier baseSpecifier) {
declSpecWriter.writeBaseSpecifiers(baseSpecifier);
return ASTVisitor.PROCESS_SKIP;
}
@Override
public int visit(IASTName name) {
if (spaceNeededBeforeName && name.getSimpleID().length != 0) {

View file

@ -282,7 +282,7 @@ public class DeclSpecWriter extends NodeWriter {
return compDeclSpec.getMembers();
}
private void writeBaseSpecifiers(ICPPASTBaseSpecifier specifier) {
public void writeBaseSpecifiers(ICPPASTBaseSpecifier specifier) {
switch (specifier.getVisibility()) {
case ICPPASTBaseSpecifier.v_public:
scribe.printStringSpace(Keywords.PUBLIC);
@ -294,6 +294,10 @@ public class DeclSpecWriter extends NodeWriter {
scribe.printStringSpace(Keywords.PRIVATE);
break;
}
if (specifier.isVirtual()) {
scribe.printStringSpace(Keywords.VIRTUAL);
}
specifier.getName().accept(visitor);
}

View file

@ -40,6 +40,7 @@ import org.eclipse.cdt.core.dom.ast.IASTStandardFunctionDeclarator;
import org.eclipse.cdt.core.dom.ast.IASTStatement;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.ast.IASTTypeId;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier.ICPPASTBaseSpecifier;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTFunctionDeclarator;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTFunctionDefinition;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNamespaceDefinition;
@ -175,7 +176,25 @@ public class ChangeGenerator extends ASTVisitor {
}
return super.visit(declarator);
}
@Override
public int visit(ICPPASTBaseSpecifier baseSpecifier) {
handleInserts(baseSpecifier);
if (requiresRewrite(baseSpecifier)) {
handleReplace(baseSpecifier);
return ASTVisitor.PROCESS_SKIP;
}
return super.visit(baseSpecifier);
}
@Override
public int leave(ICPPASTBaseSpecifier baseSpecifier) {
if (!requiresRewrite(baseSpecifier)) {
handleAppends(baseSpecifier);
}
return super.leave(baseSpecifier);
}
@Override
public int visit(IASTArrayModifier arrayModifier) {
handleInserts(arrayModifier);