|
@@ -53,8 +53,22 @@ type object_decl_kind =
|
|
|
|
|
|
let build_call_ref : (typer -> access_kind -> expr list -> with_type -> pos -> texpr) ref = ref (fun _ _ _ _ _ -> assert false)
|
|
|
|
|
|
+let relative_path ctx file =
|
|
|
+ let slashes path = String.concat "/" (ExtString.String.nsplit path "\\") in
|
|
|
+ let fpath = slashes (Path.get_full_path file) in
|
|
|
+ let fpath_lower = String.lowercase fpath in
|
|
|
+ let flen = String.length fpath_lower in
|
|
|
+ let rec loop = function
|
|
|
+ | [] -> Filename.basename file
|
|
|
+ | path :: l ->
|
|
|
+ let spath = String.lowercase (slashes path) in
|
|
|
+ let slen = String.length spath in
|
|
|
+ if slen > 0 && slen < flen && String.sub fpath_lower 0 slen = spath then String.sub fpath slen (flen - slen) else loop l
|
|
|
+ in
|
|
|
+ loop ctx.com.class_path
|
|
|
+
|
|
|
let mk_infos ctx p params =
|
|
|
- let file = if ctx.in_macro || not(Common.defined ctx.com Define.AbsolutePath) then p.pfile else Path.get_full_path p.pfile in
|
|
|
+ let file = if ctx.in_macro then p.pfile else if Common.defined ctx.com Define.AbsolutePath then Path.get_full_path p.pfile else relative_path ctx p.pfile in
|
|
|
(EObjectDecl (
|
|
|
(("fileName",null_pos,NoQuotes) , (EConst (String file) , p)) ::
|
|
|
(("lineNumber",null_pos,NoQuotes) , (EConst (Int (string_of_int (Lexer.get_error_line p))),p)) ::
|