~rdoering/ubuntu/karmic/erlang/fix-535090

« back to all changes in this revision

Viewing changes to lib/tools/src/xref_scanner.erl

  • Committer: Bazaar Package Importer
  • Author(s): Sergei Golovan
  • Date: 2009-02-15 16:42:52 UTC
  • mfrom: (3.1.2 squeeze)
  • Revision ID: james.westby@ubuntu.com-20090215164252-q5x4rcf8a5pbesb1
Tags: 1:12.b.5-dfsg-2
Upload to unstable after lenny is released.

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
        {ok, Tokens, _Line}  ->
26
26
            {ok, lex(a1(Tokens))};
27
27
        {error, {Line,Module,Info}, _EndLine} ->
28
 
            {error, apply(Module, format_error, [Info]), Line}
 
28
            {error, Module:format_error(Info), Line}
29
29
    end.
30
30
 
31
31
a1([{'-',N},{integer,N,1} | L]) ->
35
35
a1([]) ->
36
36
    [].
37
37
 
38
 
-define(MFA(M,F,A,N), {atom,N,M}, {':',N}, {atom,N,F}, {'/',N}, {integer,N,A}).
 
38
-define(MFA(M,F,A,N), {atom,N,M}, {':',_}, {atom,_,F}, {'/',_}, {integer,_,A}).
39
39
-define(MFA2(M,F,A,N), 
40
 
        {'{',N},{atom,N,M},{',',N},{atom,N,F},{',',N},{integer,N,A},{'}',N}).
41
 
-define(DECL(N,T), {':',N},{var,N,T}).
 
40
        {'{',N},{atom,_,M},{',',_},{atom,_,F},{',',_},{integer,_,A},{'}',_}).
 
41
-define(DECL(N1,N2,T), {':',N1},{var,N2,T}).
42
42
 
43
 
lex([{atom,N,V1},{'->',N},{atom,N,V2} | L]) ->
44
 
    Constant = {constant, unknown, edge, {V1,V2}},
45
 
    [{edge,N,Constant} | lex(L)];
46
 
lex([{'{',N},{atom,N,V1},{',',N},{atom,N,V2},{'}',N} | L]) ->
47
 
    Constant = {constant, unknown, edge, {V1,V2}},
48
 
    [{edge,N,Constant} | lex(L)];
49
 
lex([?MFA(M,F,A,N),{'->',N},?MFA(M2,F2,A2,N) | L]) ->
 
43
lex([{atom,N,V1},{'->',_},{atom,_,V2} | L]) ->
 
44
    Constant = {constant, unknown, edge, {V1,V2}},
 
45
    [{edge,N,Constant} | lex(L)];
 
46
lex([{'{',N},{atom,_,V1},{',',_},{atom,_,V2},{'}',_} | L]) ->
 
47
    Constant = {constant, unknown, edge, {V1,V2}},
 
48
    [{edge,N,Constant} | lex(L)];
 
49
lex([?MFA(M,F,A,N),{'->',_},?MFA(M2,F2,A2,_) | L]) ->
50
50
    Constant = {constant, 'Fun', edge, {{M,F,A},{M2,F2,A2}}},
51
51
    [{edge,N,Constant} | lex(L)];
52
52
lex([?MFA(M,F,A,N) | L]) ->
53
53
    Constant = {constant, 'Fun', vertex, {M,F,A}},
54
54
    [{vertex,N,Constant} | lex(L)];
55
 
lex([{'{',N},?MFA2(M,F,A,N),{',',N},?MFA2(M2,F2,A2,N),{'}',N} | L]) ->
 
55
lex([{'{',N},?MFA2(M,F,A,_),{',',_},?MFA2(M2,F2,A2,_),{'}',_} | L]) ->
56
56
    Constant = {constant, 'Fun', edge, {{M,F,A},{M2,F2,A2}}},
57
57
    [{edge,N,Constant} | lex(L)];
58
58
lex([?MFA2(M,F,A,N) | L]) ->
59
59
    Constant = {constant, 'Fun', vertex, {M,F,A}},
60
60
    [{vertex,N,Constant} | lex(L)];
61
 
lex([?DECL(N,Decl) | L]) ->
 
61
lex([?DECL(N1,N2,Decl) | L]) ->
62
62
    case is_type(Decl) of
63
 
        false -> [?DECL(N, Decl) | lex(L)];
64
 
        true -> [{decl,N,Decl} | lex(L)]
 
63
        false -> [?DECL(N1, N2, Decl) | lex(L)];
 
64
        true -> [{decl,N1,Decl} | lex(L)]
65
65
    end;
66
 
lex([{':',N},{'=',N} | L]) ->
 
66
lex([{':',N},{'=',_} | L]) ->
67
67
    [{':=',N} | lex(L)];
68
 
lex([{'||',N},{'|',N} | L]) ->
 
68
lex([{'||',N},{'|',_} | L]) ->
69
69
    [{'|||',N} | lex(L)];
70
70
lex([V={var,N,Var} | L]) ->
71
71
    T = case is_type(Var) of