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:
parent
a0a2059fdd
commit
e51a76571e
3 changed files with 31 additions and 1 deletions
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Add table
Reference in a new issue