diff options
author | Björn-Egil Dahlberg <[email protected]> | 2014-10-27 16:04:13 +0100 |
---|---|---|
committer | Björn-Egil Dahlberg <[email protected]> | 2014-10-27 16:04:13 +0100 |
commit | f7ab0c4f16e8a7ee62b4940b8d57748c0ad2c4cb (patch) | |
tree | 843d5faa453db7238319ec653a095ae3af74ffdf /lib/syntax_tools/test/syntax_tools_SUITE_data/syntax_tools_test.erl | |
parent | b4978407dc587ec677ff17da9efcd4c645db7b38 (diff) | |
parent | fd0e093463831cc20b0bda7c8ed24bfd31edccee (diff) | |
download | otp-f7ab0c4f16e8a7ee62b4940b8d57748c0ad2c4cb.tar.gz otp-f7ab0c4f16e8a7ee62b4940b8d57748c0ad2c4cb.tar.bz2 otp-f7ab0c4f16e8a7ee62b4940b8d57748c0ad2c4cb.zip |
Merge branch 'egil/maps/syntax-tools/OTP-12265' into maint
* egil/maps/syntax-tools/OTP-12265:
syntax_tools: Strengthen igor tests
syntax_tools: Strengthen erl_recomment tests
syntax_tools: Strengthen erl_syntax comments tests
syntax_tools: Teach Maps to erl_syntax
syntax_tools: Fix is_literal/1 for binary
syntax_tools: Strengthen epp_dodger tests
syntax_tools: Strengthen erl_syntax tests
syntax_tools: Refactor away ?line macro
Diffstat (limited to 'lib/syntax_tools/test/syntax_tools_SUITE_data/syntax_tools_test.erl')
-rw-r--r-- | lib/syntax_tools/test/syntax_tools_SUITE_data/syntax_tools_test.erl | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/lib/syntax_tools/test/syntax_tools_SUITE_data/syntax_tools_test.erl b/lib/syntax_tools/test/syntax_tools_SUITE_data/syntax_tools_test.erl new file mode 100644 index 0000000000..dd3f88d7a8 --- /dev/null +++ b/lib/syntax_tools/test/syntax_tools_SUITE_data/syntax_tools_test.erl @@ -0,0 +1,115 @@ +%% +%% File: syntax_tools_test.erl +%% Author: Björn-Egil Dahlberg +%% Created: 2014-10-23 +%% + +-module(syntax_tools_test). + +-export([foo1/0,foo2/2,foo3/0,foo4/3,foo5/1]). + +-include_lib("kernel/include/file.hrl"). +-record(state, { a, b, c, d}). +-attribute([foo/0]). + +-define(attrib, some_attrib). + +-?attrib([foo2/2]). + +-define(macro_simple1, ok). +-define(MACRO_SIMPLE2, (other)). +-define(macro_simple3, ?MODULE). +-define(macro_simple4, [?macro_simple3,?MODULE,?MACRO_SIMPLE2]). +-define(macro_simple5, (process_info)). +-define(macro_string, "hello world"). +-define(macro_argument1(X), (X + 3)). +-define(macro_argument2(X,Y), (X + 3 * Y)). +-define(macro_block(X), begin X end). +-define(macro_if(X1,X2), if X1 -> X2; true -> none end). + + +-ifdef(macro_def1). +-define(macro_cond1, yep). +-else. +-define(macro_cond1, nope). +-endif. +-ifndef(macro_def2). +-define(macro_cond2, nope). +-else. +-define(macro_cond2, yep). +-endif. +-undef(macro_def1). +-undef(macro_def2). + +%% basic test +foo1() -> + ok. + +%% macro test +foo2(A,B) -> + % string combining ? + [?macro_string, ?macro_string + ?macro_string, + "hello world " + "more hello", + [?macro_simple1, + ?MACRO_SIMPLE2, + ?macro_simple3, + ?macro_simple4, + ?macro_simple5, + ?macro_string, + ?macro_cond1, + ?macro_cond2, + ?macro_block(A), + ?macro_if(A,B), + ?macro_argument1(A), + ?macro_argument1(begin A end), + ?macro_block(<<"hello">>), + ?macro_block("hello"), + ?macro_block([$h,$e,$l,$l,$0]), + ?macro_argument1(id(<<"hello">>)), + ?macro_argument1(if A -> B; true -> 3.14 end), + ?macro_argument1(case A of ok -> B; C -> C end), + ?macro_argument1(receive M -> M after 100 -> 3 end), + ?macro_argument1(try foo5(A) catch C:?macro_simple5 -> {C,B} end), + ?macro_argument2(A,B)], + A,B,ok]. + +id(I) -> I. +%% basic terms + +foo3() -> + [atom, + 'some other atom', + {tuple,1,2,3}, + 1,2,3,3333, + 3,3333,2,1, + [$a,$b,$c], + "hello world", + <<"hello world">>, + <<1,2,3,4,5:6>>, + 3.1415, + 1.03e33]. + +%% application and records + +foo4(A,B,#state{c = C}=S) -> + Ls = foo3(), + S1 = #state{ a = 1, b = 2 }, + [foo2(A,Ls),B,C, + B(3,C), + erlang:process_info(self()), + erlang:?macro_simple5(self()), + A:?MACRO_SIMPLE2(), + A:?macro_simple1(), + A:process_info(self()), + A:B(3), + S#state{ a = 2, b = B, d = S1 }]. + +foo5(A) -> + try foo2(A,A) of + R -> R + catch + error:?macro_simple5 -> + nope + end. |