読者です 読者をやめる 読者になる 読者になる

matarilloの雑記

GitHubに公開したソフトウェアなどについて書きます。

Sharpenの最新版

「dcsoupがテストに通るようになりました」に書いたSharpenですが、MonoプロジェクトのGitHubに置いてあるやつを使ってみました。

  • Eclipseプラグインとして使うのは想定してないっぽい。EclipseJavaパーザーとかそういうのも含めて全部jarにまとめてしまって、コマンドラインから叩けってことみたい。
  • ただコマンドライン引数の解析のやり方がやっつけっぽい。java -jar sharpenの全部入りjar SOURCEPATH でいいとか言ってるんだけど、ソースパスにスラッシュ(/)が入ってることを前提としてたりして、コード読まないとわからん。
  • コマンドライン引数がちゃんとしてればちゃんと動くっぽい。
  • ジャグ配列の初期化 int[][] array = new int[3][4]; で変換がこけた。たぶん古いバージョンでもこける。
  • エンクロージング型の親クラスメソッドへの呼び出し、つまり エンクロージング型名.super.メソッド(); も変換がこけた。たぶん古いバージョンでもこける。
  • タイプセーフenumがどうなったかは確認してない。 以下のような感じになりました。

Javaコード

public enum Strategy {
    Foo {
        String execute() {
            return "this is Foo";
        }
    },
    Bar {
        String execute() {
            return "this is Bar";
        }
    };
    abstract String execute();
}

C#コード

using Sharpen;

[System.Serializable]
public sealed class Strategy
{
    public static readonly Strategy Foo = new Strategy();

    public static readonly Strategy Bar = new Strategy();

    internal abstract string execute();
}

変換ではエラーにならなかったけど、execute() の実装がぜんぶ抜け落ちてるじゃん…… Strategyクラスはabstractメンバー持ってるよね、コンパイル通らないよ……