Skip to content

Commit

Permalink
Have the source found where it is defined in the beam when default
Browse files Browse the repository at this point in the history
search fails.
  • Loading branch information
Zsolt Laky committed May 10, 2015
1 parent 556c7a6 commit 983bdf8
Show file tree
Hide file tree
Showing 3 changed files with 101 additions and 50 deletions.
49 changes: 33 additions & 16 deletions org.erlide.kernel.debugger.otp.17/src/int.erl
Original file line number Diff line number Diff line change
Expand Up @@ -624,22 +624,39 @@ check_application2("debugger-"++_) -> throw({error,{app,debugger}});
check_application2(_) -> ok.

find_src(Beam, Options) ->
Src0 = filename:rootname(Beam) ++ ".erl",
case is_file(Src0) of
true -> Src0;
false ->
EbinDir = filename:dirname(Beam),
SrcDirs = proplists:get_value(src_dirs, Options, ["src"]),
Fun = fun(Dir, Acc) ->
Src = filename:join([filename:dirname(EbinDir), Dir,
filename:basename(Src0)]),
case is_file(Src) of
true -> Src;
false -> Acc
end
end,
lists:foldl(Fun, error, SrcDirs)
end.
Src0 = filename:rootname(Beam) ++ ".erl",
case is_file(Src0) of
true -> Src0;
false ->
EbinDir = filename:dirname(Beam),
SrcDirs = proplists:get_value(src_dirs, Options, ["src"]),
Fun = fun(Dir, Acc) ->
Src = filename:join([filename:dirname(EbinDir), Dir,
filename:basename(Src0)]),
case is_file(Src) of
true -> Src;
false -> Acc
end
end,
case lists:foldl(Fun, error, SrcDirs) of
error ->
Base = list_to_atom(filename:basename(filename:rootname(Beam))),
case proplists:get_value(source,Base:module_info(compile)) of
undefined ->
error;
FoundSrc ->
case is_file(FoundSrc) of
true ->
FoundSrc;
false ->
error
end
end;
FoundSrc ->
FoundSrc
end
end
.

find_beam(Mod, Src, Options) ->
SrcDir = filename:dirname(Src),
Expand Down
49 changes: 33 additions & 16 deletions org.erlide.kernel.debugger.otp.r15/src/int.erl
Original file line number Diff line number Diff line change
Expand Up @@ -624,22 +624,39 @@ check_application2("debugger-"++_) -> throw({error,{app,debugger}});
check_application2(_) -> ok.

find_src(Beam, Options) ->
Src0 = filename:rootname(Beam) ++ ".erl",
case is_file(Src0) of
true -> Src0;
false ->
EbinDir = filename:dirname(Beam),
SrcDirs = proplists:get_value(src_dirs, Options, ["src"]),
Fun = fun(Dir, Acc) ->
Src = filename:join([filename:dirname(EbinDir), Dir,
filename:basename(Src0)]),
case is_file(Src) of
true -> Src;
false -> Acc
end
end,
lists:foldl(Fun, error, SrcDirs)
end.
Src0 = filename:rootname(Beam) ++ ".erl",
case is_file(Src0) of
true -> Src0;
false ->
EbinDir = filename:dirname(Beam),
SrcDirs = proplists:get_value(src_dirs, Options, ["src"]),
Fun = fun(Dir, Acc) ->
Src = filename:join([filename:dirname(EbinDir), Dir,
filename:basename(Src0)]),
case is_file(Src) of
true -> Src;
false -> Acc
end
end,
case lists:foldl(Fun, error, SrcDirs) of
error ->
Base = list_to_atom(filename:basename(filename:rootname(Beam))),
case proplists:get_value(source,Base:module_info(compile)) of
undefined ->
error;
FoundSrc ->
case is_file(FoundSrc) of
true ->
FoundSrc;
false ->
error
end
end;
FoundSrc ->
FoundSrc
end
end
.

find_beam(Mod, Src, Options) ->
SrcDir = filename:dirname(Src),
Expand Down
53 changes: 35 additions & 18 deletions org.erlide.kernel.debugger.otp.r16/src/int.erl
Original file line number Diff line number Diff line change
Expand Up @@ -167,8 +167,8 @@ interpretable(AbsMod) ->
%%--------------------------------------------------------------------
interpretable(AbsMod, Options) when is_list(Options) ->
case check(AbsMod, Options) of
{ok, _Res} -> true;
Error -> Error
{ok, _Res} -> true;
Error -> Error
end.

%%--------------------------------------------------------------------
Expand Down Expand Up @@ -624,22 +624,39 @@ check_application2("debugger-"++_) -> throw({error,{app,debugger}});
check_application2(_) -> ok.

find_src(Beam, Options) ->
Src0 = filename:rootname(Beam) ++ ".erl",
case is_file(Src0) of
true -> Src0;
false ->
EbinDir = filename:dirname(Beam),
SrcDirs = proplists:get_value(src_dirs, Options, ["src"]),
Fun = fun(Dir, Acc) ->
Src = filename:join([filename:dirname(EbinDir), Dir,
filename:basename(Src0)]),
case is_file(Src) of
true -> Src;
false -> Acc
end
end,
lists:foldl(Fun, error, SrcDirs)
end.
Src0 = filename:rootname(Beam) ++ ".erl",
case is_file(Src0) of
true -> Src0;
false ->
EbinDir = filename:dirname(Beam),
SrcDirs = proplists:get_value(src_dirs, Options, ["src"]),
Fun = fun(Dir, Acc) ->
Src = filename:join([filename:dirname(EbinDir), Dir,
filename:basename(Src0)]),
case is_file(Src) of
true -> Src;
false -> Acc
end
end,
case lists:foldl(Fun, error, SrcDirs) of
error ->
Base = list_to_atom(filename:basename(filename:rootname(Beam))),
case proplists:get_value(source,Base:module_info(compile)) of
undefined ->
error;
FoundSrc ->
case is_file(FoundSrc) of
true ->
FoundSrc;
false ->
error
end
end;
FoundSrc ->
FoundSrc
end
end
.

find_beam(Mod, Src, Options) ->
SrcDir = filename:dirname(Src),
Expand Down

0 comments on commit 983bdf8

Please sign in to comment.