↑up
型注釈付きの項、(a :: Int) などは、Rename において、 次のように変換するようにした。
let x :: Int x = a in x
そうすると、(x :: Int) は次のようになってしまい、無限ループ:
let x :: Int x = x in x
つまり、コンパイラが勝手に生成する変数名は、文法上ソースコードに絶対に現れないものでなければならない。この件については、"_x#" としたが、ほかにもすべて対処が必要。