Преглед на файлове

fixed not correct position for macros exceptions in big files

Nicolas Cannasse преди 13 години
родител
ревизия
24725483fd
променени са 2 файла, в които са добавени 4 реда и са изтрити 3 реда
  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
 	if ctx.macros then
 		{
 		{
 			psource = p.pfile;
 			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
 	else let file = (match ctx.com.debug with
 		| true -> ctx.curclass ^ "::" ^ ctx.curmethod
 		| 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 to_int f = int_of_float (mod_float f 2147483648.0)
 
 
 let make_pos p =
 let make_pos p =
+	let low = p.pline land 0xFFFFF in
 	{
 	{
 		Ast.pfile = p.psource;
 		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 =
 let warn ctx msg p =