2008/08/20

java2groovy で、インデントがおかしくなる原因を発見

groovyをインストール後に、 java2groovyというコマンドが使えるようになります。 これを使用することでjavaソースをgroovy形式のソースに変換できます。

…が、変換されたソースがいくつかおかしい。

  • 不要な空白行が大量に出力される
  • 閉じ中括弧(})がインデントされない
  • いい勉強になると思って groovyのサイトからソースをダウンロードし、解析してみました。 org.codehaus.groovy.antlr.treewalker.SourcePrinter.javaというソースにバグがありました。

    printNewlineAndIndent()メソッドのなかで

    if (visit == OPENING_VISIT || (visit == CLOSING_VISIT && lastLinePrinted > currentLine)) {

    という判定処理があるのですが、

    if (visit == OPENING_VISIT || visit == CLOSING_VISIT) {

    と書き直すことで閉じ中括弧のインデント問題は解決できました。

    不要な空白行が大量に出力される原因は見つけることができませんでした。 スクリプトを作って不要な改行を除去することにします。

    0 件のコメント:

    コメントを投稿