Clover2開発日誌

Clover2というJavaのように静的な型を持つRubyのようなコンパイラ+仮想マシンの開発日誌です。LLVMでJITもします。https://github.com/ab25cqにて開発しています。

version 3.1.5リリース

version 3.1.5 リリース 2017/11/20

クラスの循環参照の問題を解決しました。

> vim ClassA.clcl
class ClassA {
    field1: static int;

    def hello(): static {
        ClassB.hello();
    }
}
> vim ClassB.clcl
class ClassB {
    def hello(): static {
        println("ClassA.field1 \{ClassA.field1}\n");
    }
}

このようなコードの場合ClassA.clcl, ClassB.clcl両方のコンパイルが通りませんが以下の様にすれば大丈夫です。

> vim ClassA.clcl
include "ClassB.clcl"

class ClassA {
    field1: static int;

    def hello(): static {
        ClassB.hello();
    }
}
> vim ClassB.clcl
include "ClassA.clcl"

class ClassB {
    def hello(): static {
        println("ClassA.field1 \{ClassA.field1}\n");
    }
}

循環参照しているソース両方でincludeしてください。どちらかのソースをコンパイルするとコンパイルが通ります。