🛠️Hare Hosted Typechecker

Declaration Solver Test File

// alias
type a = int;
type ax = *int;
type axx = *a;

// forward alias
type b = c;
type c = int;
type bptr = *c2;
type c2 = c;

// struct -> alias
type d = struct {
	a: a,
};

// struct -> forward alias
type e = struct {
	f: f,
};
type f = int;

// struct -> self reference
type g = struct {
	g: *g,
};

// struct -> circ reference
type h = struct {
	i: *i,
};
type i = struct {
	h: *h,
};

// struct -> tight circ reference
type j = struct {
	k: k,
};
type k = struct {
	j: *j,
};