Selaa lähdekoodia

fixed SFlags.has and !complex_expr precedence

Nicolas Cannasse 14 vuotta sitten
vanhempi
commit
261a860dcd
1 muutettua tiedostoa jossa 7 lisäystä ja 1 poistoa
  1. 7 1
      std/sys/db/SpodMacros.hx

+ 7 - 1
std/sys/db/SpodMacros.hx

@@ -637,6 +637,12 @@ class SpodMacros {
 			case OpNot:
 			case OpNot:
 				var sql = makeString("!", p);
 				var sql = makeString("!", p);
 				unify(r.t, DBool, e.pos);
 				unify(r.t, DBool, e.pos);
+				switch( r.sql.expr ) {
+				case EConst(_):
+				default:
+					r.sql = sqlAddString(r.sql, ")");
+					sql = sqlAddString(sql, "(");
+				}
 				return { sql : sqlAdd(sql, r.sql, p), t : DBool, n : r.n };
 				return { sql : sqlAdd(sql, r.sql, p), t : DBool, n : r.n };
 			case OpNegBits:
 			case OpNegBits:
 				var sql = makeString("~", p);
 				var sql = makeString("~", p);
@@ -719,7 +725,7 @@ class SpodMacros {
 							var id = makeIdent(pl[0]);
 							var id = makeIdent(pl[0]);
 							var idx = Lambda.indexOf(vals,id);
 							var idx = Lambda.indexOf(vals,id);
 							if( idx < 0 ) error("Flag should be "+vals.join(","), pl[0].pos);
 							if( idx < 0 ) error("Flag should be "+vals.join(","), pl[0].pos);
-							return { sql : sqlAddString(r.sql, " AND " + (1 << idx) + " != 0"), t : DBool, n : r.n };
+							return { sql : sqlAddString(r.sql, " & " + (1 << idx) + " != 0"), t : DBool, n : r.n };
 						default:
 						default:
 						}
 						}
 					}
 					}