Browse Source

fixed position calculus in display mode

Nicolas Cannasse 14 years ago
parent
commit
36964a69a5
1 changed files with 5 additions and 5 deletions
  1. 5 5
      parser.ml

+ 5 - 5
parser.ml

@@ -644,12 +644,12 @@ and expr_next e1 = parser
 
 
 and parse_switch_cases eswitch cases = parser
 and parse_switch_cases eswitch cases = parser
 	| [< '(Kwd Default,p1); '(DblDot,_); s >] ->
 	| [< '(Kwd Default,p1); '(DblDot,_); s >] ->
-		let b = EBlock (try block [] s with Display e -> display (ESwitch (eswitch,cases,Some e),p1)) in
+		let b = EBlock (try block [] s with Display e -> display (ESwitch (eswitch,cases,Some e),punion (pos eswitch) (pos e))) in
 		let l , def = parse_switch_cases eswitch cases s in
 		let l , def = parse_switch_cases eswitch cases s in
 		(match def with None -> () | Some (e,p) -> error Duplicate_default p);
 		(match def with None -> () | Some (e,p) -> error Duplicate_default p);
 		l , Some (b,p1)
 		l , Some (b,p1)
 	| [< '(Kwd Case,p1); el = psep Comma expr; '(DblDot,_); s >] ->
 	| [< '(Kwd Case,p1); el = psep Comma expr; '(DblDot,_); s >] ->
-		let b = EBlock (try block [] s with Display e -> display (ESwitch (eswitch,List.rev ((el,e) :: cases),None),p1)) in
+		let b = EBlock (try block [] s with Display e -> display (ESwitch (eswitch,List.rev ((el,e) :: cases),None),punion (pos eswitch) (pos e))) in
 		parse_switch_cases eswitch ((el,(b,p1)) :: cases) s
 		parse_switch_cases eswitch ((el,(b,p1)) :: cases) s
 	| [< >] ->
 	| [< >] ->
 		List.rev cases , None
 		List.rev cases , None
@@ -663,7 +663,7 @@ and parse_catch etry = parser
 				| [< e = expr >] ->	(name,t,e)
 				| [< e = expr >] ->	(name,t,e)
 				| [< >] -> serror()
 				| [< >] -> serror()
 			with
 			with
-				Display e -> display (ETry (etry,[name,t,e]),p))
+				Display e -> display (ETry (etry,[name,t,e]),punion (pos etry) (pos e)))
 		| [< '(_,p) >] -> error Missing_type p
 		| [< '(_,p) >] -> error Missing_type p
 
 
 and parse_call_params ec s =
 and parse_call_params ec s =
@@ -672,7 +672,7 @@ and parse_call_params ec s =
 		| [< e = expr >] -> Some e
 		| [< e = expr >] -> Some e
 		| [< >] -> None
 		| [< >] -> None
 	with Display e ->
 	with Display e ->
-		display (ECall (ec,[e]),pos ec)
+		display (ECall (ec,[e]),punion (pos ec) (pos e))
 	) in
 	) in
 	let rec loop acc =
 	let rec loop acc =
 		try
 		try
@@ -680,7 +680,7 @@ and parse_call_params ec s =
 			| [< '(Comma,_); e = expr >] -> loop (e::acc)
 			| [< '(Comma,_); e = expr >] -> loop (e::acc)
 			| [< >] -> List.rev acc
 			| [< >] -> List.rev acc
 		with Display e ->
 		with Display e ->
-			display (ECall (ec,List.rev (e::acc)),pos ec)
+			display (ECall (ec,List.rev (e::acc)),punion (pos ec) (pos e))
 	in
 	in
 	match e with
 	match e with
 	| None -> []
 	| None -> []