0
libToolingを使用してソーストランスレータにソースを書き込もうとしています。ここでは、ソースの場所が2文字で終わるのはなぜですか?
私はASTMatchersを使用して中括弧を持たない文を見つけようとしていますし、リライタを使用して中括弧を追加しようとしています。
私が使用しているマッチャは次のとおりです。
ifStmt(unless(hasDescendant(compoundStmt())))
その後、私はちょうど開始と終了の位置を取得し、中括弧を書き換えます。ここで
は、そのためのソースコードは次のとおりです。
if (const IfStmt *IfS = Result.Nodes.getNodeAs<clang::IfStmt>("ifStmt")) {
const Stmt *Then = IfS->getThen();
Rewrite.InsertText(Then->getLocStart(), "{", true, true);
Rewrite.InsertText(Then->getLocEnd(),"}",true,true);
今の問題は、何らかの理由で終了位置が2つの文字によって常にオフであるということです。なぜこれはそうですか?
私はInserTextの代わりにInsertTextAfterTokenを使ってみました。それは常にセミコロンを見逃していたので、今は1つしかありません。 – bloodstalker