バグってたよ。

def start() -> int:
let:
	x = 0
in:
	if !(x&&x) || !(x&&x):
		return 100
	return 200

こんな感じのコードをコンパイルするとおかしくなります。上の場合だと、条件が真になるはずなのにならない。
えーと、修正するのがほんのちょっと面倒なんで、次のバージョンで直すようにします。すいません。

#include <stdio.h>

int
put( char *c )
{
  puts( c );
  return 0;
}

/* 出力は何? */
int main()
{
  if ( !( put("a")&&put("b") ) ) {
    put("c");
  }
  return 0;
}

否定演算子って苦手なんだよな…(言い訳)