--- /dev/null
+struct foo bar end;
+
+method f1(a)
+ return 5 * a.foo;
+end;
+
+method f2(a)
+ return a.bar * this;
+end;
+
+method f3(a)
+ return (a.foo-3) < (a.bar-3);
+end;
+
+method f4(a)
+ return (a.foo*1) < 6;
+end;
+
+method f5(a)
+ return 5 < (a.bar * 1);
+end;
+
+method f6(a)
+ return (1 * a.foo) < this;
+end;
+
+method f7(a)
+ return a.foo < (a.bar * 1);
+end;
+
+method f8(a)
+ return a.foo < this;
+end;
+
+method f9(a)
+ return this < a.bar;
+end;
+
+method f10(a)
+ return a.foo < 6;
+end;
+
+method f11(a)
+ return 5 < a.bar;
+end;
--- /dev/null
+
+long f1(long, long*);
+long f2(long, long*);
+long f3(long, long*);
+long f4(long, long*);
+long f5(long, long*);
+long f6(long, long*);
+long f7(long, long*);
+long f8(long, long*);
+long f9(long, long*);
+long f10(long, long*);
+long f11(long, long*);
+
+long muh[] = {5, 6};
+long kuh[] = {6, 5};
+
+RET(f1(4,muh) == 25 &&
+ f2(5,muh) == 30 &&
+ f3(5,muh) == 1 && f3(5,kuh) == 0 &&
+ f4(5,muh) == 1 && f4(5,kuh) == 0 &&
+ f5(5,muh) == 1 && f5(5,kuh) == 0 &&
+ f6(6,muh) == 0 && f6(6,kuh) == 0 &&
+ f7(5,muh) == 1 && f7(5,kuh) == 0 &&
+ f8(5,muh) == 0 && f8(7,kuh) == 1 &&
+ f9(5,muh) == 1 && f9(5,kuh) == 0 &&
+ f10(5,muh) == 1 && f10(5,kuh) == 0 &&
+ f11(5,muh) == 1 && f11(5,kuh) == 0
+);
--- /dev/null
+struct foo bar end;
+
+method f1(a)
+ return (a.foo * 1) = 5;
+end;
+
+method f2(a)
+ return 5 = (a.bar * 1);
+end;
+
+method f3(a)
+ return (a.foo * 1) = this;
+end;
+
+method f4(a)
+ return this = (a.bar * 1);
+end;
+
+method f5(a)
+ return a.foo = (this * 1);
+end;
+
+method f6(a)
+ return a.foo = 5;
+end;
+
+method f7(a)
+ return 5 = a.bar;
+end;
+
+method f8(a)
+ return a.foo = this;
+end;
+
+method f9(a)
+ return this = a.bar;
+end;
+
--- /dev/null
+
+long f1(long, long*);
+long f2(long, long*);
+long f3(long, long*);
+long f4(long, long*);
+long f5(long, long*);
+long f6(long, long*);
+long f7(long, long*);
+long f8(long, long*);
+long f9(long, long*);
+
+long muh[] = {5, 6};
+long kuh[] = {6, 5};
+
+RET(f1(4,muh) == 1 && f1(5,kuh) == 0 &&
+ f2(5,muh) == 0 && f2(5,kuh) == 1 &&
+ f3(5,muh) == 1 && f3(5,kuh) == 0 &&
+ f4(5,muh) == 0 && f4(5,kuh) == 1 &&
+ f5(5,muh) == 1 && f5(5,kuh) == 0 &&
+ f6(6,muh) == 1 && f6(6,kuh) == 0 &&
+ f7(5,muh) == 0 && f7(5,kuh) == 1 &&
+ f8(5,muh) == 1 && f8(5,kuh) == 0 &&
+ f9(5,muh) == 0 && f9(5,kuh) == 1
+);
--- /dev/null
+method f1(a b)
+ return not(a or b);
+end;
+
+method f2(a b)
+ return not(not(a or b));
+end;
+
+method f3(a b)
+ return not(a - b);
+end;
+
+method f4(a b)
+ return not(not(a - b));
+end;
+
+method f5(a b)
+ return not(a < b);
+end;
+
+method f6(a b)
+ return not(not(a < b));
+end;
+
+method f7(a b)
+ return not(a = b);
+end;
+
+method f8(a b)
+ return not(not(a = b));
+end;
--- /dev/null
+long f1(long,long,long);
+long f2(long,long,long);
+long f3(long,long,long);
+long f4(long,long,long);
+long f5(long,long,long);
+long f6(long,long,long);
+long f7(long,long,long);
+long f8(long,long,long);
+
+RET(
+f1(0,0,0) == 1 && f1(0,1,1) == 0 &&
+f2(0,0,0) == 0 && f2(0,1,1) == 1 &&
+
+f3(0,4,4) == 1 && f3(0,4,3) == 0 &&
+f4(0,4,4) == 0 && f4(0,4,3) == 1 &&
+
+f5(0,5,4) == 1 && f5(0,4,5) == 0 &&
+f6(0,5,4) == 0 && f6(0,4,5) == 1 &&
+
+f7(0,5,4) == 1 && f7(0,5,5) == 0 &&
+f8(0,5,4) == 0 && f8(0,5,5) == 1
+);