Răsfoiți Sursa

fixed not correct position for macros exceptions in big files

Nicolas Cannasse 13 ani în urmă
părinte
comite
24725483fd
2 a modificat fișierele cu 4 adăugiri și 3 ștergeri
  1. 1 1
      genneko.ml
  2. 3 2
      interp.ml

+ 1 - 1
genneko.ml

@@ -39,7 +39,7 @@ let pos ctx p =
 	if ctx.macros then
 		{
 			psource = p.pfile;
-			pline = p.pmin lor (p.pmax lsl 16);
+			pline = p.pmin lor ((p.pmax - p.pmin) lsl 20);
 		}
 	else let file = (match ctx.com.debug with
 		| true -> ctx.curclass ^ "::" ^ ctx.curmethod

+ 3 - 2
interp.ml

@@ -186,10 +186,11 @@ let make_ast (e:texpr) : Ast.expr = (!make_ast_ref) e
 let to_int f = int_of_float (mod_float f 2147483648.0)
 
 let make_pos p =
+	let low = p.pline land 0xFFFFF in
 	{
 		Ast.pfile = p.psource;
-		Ast.pmin = if p.pline < 0 then 0 else p.pline land 0xFFFF;
-		Ast.pmax = if p.pline < 0 then 0 else p.pline lsr 16;
+		Ast.pmin = low;
+		Ast.pmax = low + (p.pline lsr 20);
 	}
 
 let warn ctx msg p =