package ch.hsr.ifs.cdttesting.example.examplecodantest;
import org.eclipse.cdt.codan.ui.AbstractAstRewriteQuickFix;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.index.IIndex;
import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.ltk.core.refactoring.TextFileChange;
import org.eclipse.text.edits.ReplaceEdit;
public class MyQuickFix extends AbstractAstRewriteQuickFix {
@Override
public void modifyAST(IIndex index, IMarker marker) {
try {
@SuppressWarnings("unused")
IASTTranslationUnit ast = getTranslationUnitViaEditor(marker).getAST(index, ITranslationUnit.AST_SKIP_INDEXED_HEADERS);
// a real test should use ModificationCollector/ASTRewrite or Refactoring here.
// For testing purposes, we only replace some text directly.
TextFileChange change = new TextFileChange("rename foo to bar text edit", (IFile) marker.getResource());
change.setEdit(new ReplaceEdit(4, 3, "bar"));
change.perform(new NullProgressMonitor());
} catch (CoreException e) {
throw new RuntimeException(e);
}
}
@Override
public String getLabel() {
return "My QuickFix";
}
}