diff options
Diffstat (limited to 'lib/syntax_tools')
| -rw-r--r-- | lib/syntax_tools/doc/src/Makefile | 2 | ||||
| -rw-r--r-- | lib/syntax_tools/doc/src/book.xml | 2 | ||||
| -rw-r--r-- | lib/syntax_tools/doc/src/notes.xml | 2 | ||||
| -rw-r--r-- | lib/syntax_tools/doc/src/part.xml | 2 | ||||
| -rw-r--r-- | lib/syntax_tools/doc/src/part_notes.xml | 2 | ||||
| -rw-r--r-- | lib/syntax_tools/doc/src/ref_man.xml | 2 | ||||
| -rw-r--r-- | lib/syntax_tools/src/erl_recomment.erl | 5 | ||||
| -rw-r--r-- | lib/syntax_tools/src/erl_syntax.erl | 2 | ||||
| -rw-r--r-- | lib/syntax_tools/src/erl_syntax_lib.erl | 12 | ||||
| -rw-r--r-- | lib/syntax_tools/src/erl_tidy.erl | 10 | ||||
| -rw-r--r-- | lib/syntax_tools/src/igor.erl | 5 | ||||
| -rw-r--r-- | lib/syntax_tools/src/merl.erl | 22 | ||||
| -rw-r--r-- | lib/syntax_tools/src/merl_transform.erl | 16 | ||||
| -rw-r--r-- | lib/syntax_tools/src/syntax_tools.appup.src | 2 | ||||
| -rw-r--r-- | lib/syntax_tools/test/Makefile | 2 | ||||
| -rw-r--r-- | lib/syntax_tools/test/merl_SUITE.erl | 2 | ||||
| -rw-r--r-- | lib/syntax_tools/test/syntax_tools_SUITE.erl | 2 | 
17 files changed, 60 insertions, 32 deletions
| diff --git a/lib/syntax_tools/doc/src/Makefile b/lib/syntax_tools/doc/src/Makefile index 6aca06424d..ff4f3f78ff 100644 --- a/lib/syntax_tools/doc/src/Makefile +++ b/lib/syntax_tools/doc/src/Makefile @@ -1,7 +1,7 @@  #  # %CopyrightBegin%  # -# Copyright Ericsson AB 2006-2012. All Rights Reserved. +# Copyright Ericsson AB 2006-2016. All Rights Reserved.  #  # Licensed under the Apache License, Version 2.0 (the "License");  # you may not use this file except in compliance with the License. diff --git a/lib/syntax_tools/doc/src/book.xml b/lib/syntax_tools/doc/src/book.xml index fb64a7dd21..5f9481374f 100644 --- a/lib/syntax_tools/doc/src/book.xml +++ b/lib/syntax_tools/doc/src/book.xml @@ -4,7 +4,7 @@  <book xmlns:xi="http://www.w3.org/2001/XInclude">    <header titlestyle="normal">      <copyright> -      <year>2006</year><year>2013</year> +      <year>2006</year><year>2016</year>        <holder>Ericsson AB. All Rights Reserved.</holder>      </copyright>      <legalnotice> diff --git a/lib/syntax_tools/doc/src/notes.xml b/lib/syntax_tools/doc/src/notes.xml index 9f803264a2..406a6c071b 100644 --- a/lib/syntax_tools/doc/src/notes.xml +++ b/lib/syntax_tools/doc/src/notes.xml @@ -4,7 +4,7 @@  <chapter>    <header>      <copyright> -      <year>2007</year><year>2013</year> +      <year>2007</year><year>2016</year>        <holder>Ericsson AB. All Rights Reserved.</holder>      </copyright>      <legalnotice> diff --git a/lib/syntax_tools/doc/src/part.xml b/lib/syntax_tools/doc/src/part.xml index c111b045da..a20efbc02e 100644 --- a/lib/syntax_tools/doc/src/part.xml +++ b/lib/syntax_tools/doc/src/part.xml @@ -4,7 +4,7 @@  <part xmlns:xi="http://www.w3.org/2001/XInclude">    <header>      <copyright> -      <year>2006</year><year>2013</year> +      <year>2006</year><year>2016</year>        <holder>Ericsson AB. All Rights Reserved.</holder>      </copyright>      <legalnotice> diff --git a/lib/syntax_tools/doc/src/part_notes.xml b/lib/syntax_tools/doc/src/part_notes.xml index 308cf62915..e02ffddcb2 100644 --- a/lib/syntax_tools/doc/src/part_notes.xml +++ b/lib/syntax_tools/doc/src/part_notes.xml @@ -4,7 +4,7 @@  <part xmlns:xi="http://www.w3.org/2001/XInclude">    <header>      <copyright> -      <year>2007</year><year>2013</year> +      <year>2007</year><year>2016</year>        <holder>Ericsson AB. All Rights Reserved.</holder>      </copyright>      <legalnotice> diff --git a/lib/syntax_tools/doc/src/ref_man.xml b/lib/syntax_tools/doc/src/ref_man.xml index 65b1725163..774a431db7 100644 --- a/lib/syntax_tools/doc/src/ref_man.xml +++ b/lib/syntax_tools/doc/src/ref_man.xml @@ -4,7 +4,7 @@  <application xmlns:xi="http://www.w3.org/2001/XInclude">    <header>      <copyright> -      <year>2006</year><year>2013</year> +      <year>2006</year><year>2016</year>        <holder>Ericsson AB. All Rights Reserved.</holder>      </copyright>      <legalnotice> diff --git a/lib/syntax_tools/src/erl_recomment.erl b/lib/syntax_tools/src/erl_recomment.erl index 72e1e2d2f5..5ce533285d 100644 --- a/lib/syntax_tools/src/erl_recomment.erl +++ b/lib/syntax_tools/src/erl_recomment.erl @@ -611,12 +611,15 @@ expand_comment(C) ->  	       attrs             :: erl_syntax:syntaxTreeAttributes(),  	       precomments  = [] :: [erl_syntax:syntaxTree()],  	       postcomments = [] :: [erl_syntax:syntaxTree()], -	       subtrees     = [] :: [erl_syntax:syntaxTree()]}). +	       subtrees     = [] :: [extendedSyntaxTree()]}). +  -record(list, {min = 0           :: integer(),  	       max = 0           :: integer(),  	       subtrees = []     :: [erl_syntax:syntaxTree()]}). +-type extendedSyntaxTree() :: #tree{} | #leaf{} | #list{}. +  leaf_node(Min, Max, Value) ->      #leaf{min = Min,  	  max = Max, diff --git a/lib/syntax_tools/src/erl_syntax.erl b/lib/syntax_tools/src/erl_syntax.erl index 3f2a3e05dd..97b5797b06 100644 --- a/lib/syntax_tools/src/erl_syntax.erl +++ b/lib/syntax_tools/src/erl_syntax.erl @@ -355,7 +355,7 @@  %% where `Pos' `Ann' and `Comments' are the corresponding values of a  %% `tree' or `wrapper' record. --record(attr, {pos = 0    :: term(), +-record(attr, {pos = erl_anno:new(0) :: term(),  	       ann = []   :: [term()],  	       com = none :: 'none' | #com{}}).  -type syntaxTreeAttributes() :: #attr{}. diff --git a/lib/syntax_tools/src/erl_syntax_lib.erl b/lib/syntax_tools/src/erl_syntax_lib.erl index 5b5b18d15b..58c4cc5244 100644 --- a/lib/syntax_tools/src/erl_syntax_lib.erl +++ b/lib/syntax_tools/src/erl_syntax_lib.erl @@ -359,9 +359,9 @@ new_variable_name(S) ->  %% within a reasonably small range relative to the number of elements in  %% the set.  %% -%% This function uses the module `random' to generate new +%% This function uses the module `rand' to generate new  %% keys. The seed it uses may be initialized by calling -%% `random:seed/0' or `random:seed/3' before this +%% `rand:seed/1' or `rand:seed/2' before this  %% function is first called.  %%  %% @see new_variable_name/1 @@ -404,7 +404,13 @@ start_range(S) ->  %% order, but (pseudo-)randomly distributed over the range.  generate(_Key, Range) -> -    random:uniform(Range).    % works well +    _ = case rand:export_seed() of +	    undefined -> +		rand:seed(exsplus, {753,8,73}); +	    _ -> +		ok +	end, +    rand:uniform(Range).			% works well  %% ===================================================================== diff --git a/lib/syntax_tools/src/erl_tidy.erl b/lib/syntax_tools/src/erl_tidy.erl index db7f0939a3..f2de12b410 100644 --- a/lib/syntax_tools/src/erl_tidy.erl +++ b/lib/syntax_tools/src/erl_tidy.erl @@ -937,7 +937,7 @@ hidden_uses_2(Tree, Used) ->  -record(env, {file		       :: file:filename(),                module                   :: atom(), -              current                  :: fa(), +              current                  :: fa() | 'undefined',                imports = dict:new()     :: dict:dict(atom(), atom()),                context = normal	       :: context(),                verbosity = 1	       :: 0 | 1 | 2, @@ -949,10 +949,10 @@ hidden_uses_2(Tree, Used) ->                new_guard_tests = true   :: boolean(),  	      old_guard_tests = false  :: boolean()}). --record(st, {varc              :: non_neg_integer(), +-record(st, {varc              :: non_neg_integer() | 'undefined',  	     used = sets:new() :: sets:set({atom(), arity()}),  	     imported          :: sets:set({atom(), arity()}), -	     vars              :: sets:set(atom()), +	     vars              :: sets:set(atom()) | 'undefined',  	     functions         :: sets:set({atom(), arity()}),  	     new_forms = []    :: [erl_syntax:syntaxTree()],  	     rename            :: dict:dict(mfa(), {atom(), atom()})}). @@ -1064,13 +1064,13 @@ visit_clause(Tree, Env, St0) ->  visit_infix_expr(Tree, #env{context = guard_test}, St0) ->      %% Detect transition from guard test to guard expression. -    visit_other(Tree, #env{context = guard_expr}, St0); +    visit_other(Tree, #env{context = guard_expr, file = ""}, St0);  visit_infix_expr(Tree, Env, St0) ->      visit_other(Tree, Env, St0).  visit_prefix_expr(Tree, #env{context = guard_test}, St0) ->      %% Detect transition from guard test to guard expression. -    visit_other(Tree, #env{context = guard_expr}, St0); +    visit_other(Tree, #env{context = guard_expr, file = ""}, St0);  visit_prefix_expr(Tree, Env, St0) ->      visit_other(Tree, Env, St0). diff --git a/lib/syntax_tools/src/igor.erl b/lib/syntax_tools/src/igor.erl index eac5af5540..4557678f9d 100644 --- a/lib/syntax_tools/src/igor.erl +++ b/lib/syntax_tools/src/igor.erl @@ -1594,10 +1594,11 @@ alias_expansions_2(Modules, Table) ->  	       preserved  :: boolean(),  	       no_headers :: boolean(),  	       notes      :: notes(), -	       map        :: map_fun(), +	       map        :: map_fun() | 'undefined',  	       renaming   :: fun((atom()) -> map_fun()),  	       expand     :: dict:dict({atom(), integer()}, -                                       {atom(), {atom(), integer()}}), +                                       {atom(), {atom(), integer()}}) +                           | 'undefined',  	       redirect	  :: dict:dict(atom(), atom())  	      }). diff --git a/lib/syntax_tools/src/merl.erl b/lib/syntax_tools/src/merl.erl index 690306c17b..163ce48bbc 100644 --- a/lib/syntax_tools/src/merl.erl +++ b/lib/syntax_tools/src/merl.erl @@ -514,15 +514,17 @@ parse_forms([]) ->  parse_2(Ts) ->      %% one or more comma-separated expressions?      %% (recall that Ts has no dot tokens if we get to this stage) -    case erl_parse:parse_exprs(Ts ++ [{dot,0}]) of +    A = a0(), +    case erl_parse:parse_exprs(Ts ++ [{dot,A}]) of          {ok, Exprs} -> Exprs;          {error, E} -> -            parse_3(Ts ++ [{'end',0}, {dot,0}], [E]) +            parse_3(Ts ++ [{'end',A}, {dot,A}], [E])      end.  parse_3(Ts, Es) ->      %% try-clause or clauses? -    case erl_parse:parse_exprs([{'try',0}, {atom,0,true}, {'catch',0} | Ts]) of +    A = a0(), +    case erl_parse:parse_exprs([{'try',A}, {atom,A,true}, {'catch',A} | Ts]) of          {ok, [{'try',_,_,_,_,_}=X]} ->              %% get the right kind of qualifiers in the clause patterns              erl_syntax:try_expr_handlers(X); @@ -533,7 +535,8 @@ parse_3(Ts, Es) ->  parse_4(Ts, Es) ->      %% fun-clause or clauses? (`(a)' is also a pattern, but `(a,b)' isn't,      %% so fun-clauses must be tried before normal case-clauses -    case erl_parse:parse_exprs([{'fun',0} | Ts]) of +    A = a0(), +    case erl_parse:parse_exprs([{'fun',A} | Ts]) of          {ok, [{'fun',_,{clauses,Cs}}]} -> Cs;          {error, E} ->              parse_5(Ts, [E|Es]) @@ -541,7 +544,8 @@ parse_4(Ts, Es) ->  parse_5(Ts, Es) ->      %% case-clause or clauses? -    case erl_parse:parse_exprs([{'case',0}, {atom,0,true}, {'of',0} | Ts]) of +    A = a0(), +    case erl_parse:parse_exprs([{'case',A}, {atom,A,true}, {'of',A} | Ts]) of          {ok, [{'case',_,_,Cs}]} -> Cs;          {error, E} ->              %% select the best error to report @@ -1210,7 +1214,7 @@ merge_comments(StartLine, Cs, [], Acc) ->      merge_comments(StartLine, [], [],                     [erl_syntax:set_pos(                        erl_syntax:comment(Indent, Text), -                      StartLine + Line - 1) +                      anno(StartLine + Line - 1))                      || {Line, _, Indent, Text} <- Cs] ++ Acc);  merge_comments(StartLine, [C|Cs], [T|Ts], Acc) ->      {Line, _Col, Indent, Text} = C, @@ -1228,3 +1232,9 @@ merge_comments(StartLine, [C|Cs], [T|Ts], Acc) ->                     [erl_syntax:comment(Indent, Text)], T),              merge_comments(StartLine, Cs, [Tc|Ts], Acc)      end. + +a0() -> +    anno(0). + +anno(Location) -> +    erl_anno:new(Location). diff --git a/lib/syntax_tools/src/merl_transform.erl b/lib/syntax_tools/src/merl_transform.erl index 66b06c8137..fe58b6a122 100644 --- a/lib/syntax_tools/src/merl_transform.erl +++ b/lib/syntax_tools/src/merl_transform.erl @@ -68,8 +68,7 @@ case_guard([{expr,_}, {text,Text}]) ->      erl_syntax:is_literal(Text).  case_body([{expr,Expr}, {text,_Text}], T) -> -    pre_expand_case(Expr, erl_syntax:case_expr_clauses(T), -                    erl_syntax:get_pos(T)). +    pre_expand_case(Expr, erl_syntax:case_expr_clauses(T), get_location(T)).  post(T) ->      merl:switch( @@ -79,7 +78,7 @@ post(T) ->                    lists:all(fun erl_syntax:is_literal/1, [F|As])            end,            fun ([{args, As}, {function, F}]) -> -                  Line = erl_syntax:get_pos(F), +                  Line = get_location(F),                    [F1|As1] = lists:map(fun erl_syntax:concrete/1, [F|As]),                    eval_call(Line, F1, As1, T)            end}, @@ -118,7 +117,7 @@ expand_qquote(_As, T, _StartPos) ->  expand_template(F, [Pattern | Args], T) ->      case erl_syntax:is_literal(Pattern) of          true -> -            Line = erl_syntax:get_pos(Pattern), +            Line = get_location(Pattern),              As = [erl_syntax:concrete(Pattern)],              merl:qquote(Line, "merl:_@function(_@pattern, _@args)",                 [{function, F}, @@ -260,3 +259,12 @@ is_erlang_var([C|_]) when C >= $A, C =< $Z ; C >= $À, C =< $Þ, C /= $× ->      true;  is_erlang_var(_) ->      false. + +get_location(T) -> +    Pos = erl_syntax:get_pos(T), +    case erl_anno:is_anno(Pos) of +        true -> +            erl_anno:location(Pos); +        false -> +            Pos +    end. diff --git a/lib/syntax_tools/src/syntax_tools.appup.src b/lib/syntax_tools/src/syntax_tools.appup.src index 59d591a01f..0dad228ca3 100644 --- a/lib/syntax_tools/src/syntax_tools.appup.src +++ b/lib/syntax_tools/src/syntax_tools.appup.src @@ -1,7 +1,7 @@  %% -*- erlang -*-  %% %CopyrightBegin%  %% -%% Copyright Ericsson AB 2014. All Rights Reserved. +%% Copyright Ericsson AB 2014-2016. All Rights Reserved.  %%  %% Licensed under the Apache License, Version 2.0 (the "License");  %% you may not use this file except in compliance with the License. diff --git a/lib/syntax_tools/test/Makefile b/lib/syntax_tools/test/Makefile index 569c044b1a..4ace860223 100644 --- a/lib/syntax_tools/test/Makefile +++ b/lib/syntax_tools/test/Makefile @@ -26,7 +26,7 @@ RELSYSDIR = $(RELEASE_PATH)/syntax_tools_test  # ----------------------------------------------------  ERL_MAKE_FLAGS +=  -ERL_COMPILE_FLAGS += -I$(ERL_TOP)/lib/test_server/include +ERL_COMPILE_FLAGS +=  EBIN = . diff --git a/lib/syntax_tools/test/merl_SUITE.erl b/lib/syntax_tools/test/merl_SUITE.erl index 125250395a..945972d405 100644 --- a/lib/syntax_tools/test/merl_SUITE.erl +++ b/lib/syntax_tools/test/merl_SUITE.erl @@ -16,7 +16,7 @@  %%   -module(merl_SUITE). --include_lib("test_server/include/test_server.hrl"). +-include_lib("common_test/include/ct.hrl").  %% include the Merl header file  -include_lib("syntax_tools/include/merl.hrl"). diff --git a/lib/syntax_tools/test/syntax_tools_SUITE.erl b/lib/syntax_tools/test/syntax_tools_SUITE.erl index 40e00e0554..eb52cce6af 100644 --- a/lib/syntax_tools/test/syntax_tools_SUITE.erl +++ b/lib/syntax_tools/test/syntax_tools_SUITE.erl @@ -18,7 +18,7 @@  %%  -module(syntax_tools_SUITE). --include_lib("test_server/include/test_server.hrl"). +-include_lib("common_test/include/ct.hrl").  %% Test server specific exports  -export([all/0, suite/0,groups/0,init_per_suite/1, end_per_suite/1,  | 
