diff options
Diffstat (limited to 'lib/compiler/test')
| -rw-r--r-- | lib/compiler/test/andor_SUITE.erl | 15 | ||||
| -rw-r--r-- | lib/compiler/test/core_SUITE.erl | 5 | ||||
| -rw-r--r-- | lib/compiler/test/core_SUITE_data/bad_boolean_guard.core | 32 | 
3 files changed, 46 insertions, 6 deletions
| diff --git a/lib/compiler/test/andor_SUITE.erl b/lib/compiler/test/andor_SUITE.erl index 7bef0aa27c..d79696df38 100644 --- a/lib/compiler/test/andor_SUITE.erl +++ b/lib/compiler/test/andor_SUITE.erl @@ -129,6 +129,10 @@ t_case_y(X, Y, Z) ->  	    Y =:= 100      end. +-define(GUARD(E), if E -> true; +             true -> false +          end). +  t_and_or(Config) when is_list(Config) ->      ?line true = true and true,      ?line false = true and false, @@ -160,11 +164,14 @@ t_and_or(Config) when is_list(Config) ->      ?line true = false or id(true),      ?line false = false or id(false), -   ok. +    True = id(true), --define(GUARD(E), if E -> true; -		     true -> false -		  end). +    false = ?GUARD(erlang:'and'(bar, True)), +    false = ?GUARD(erlang:'or'(bar, True)), +    false = ?GUARD(erlang:'not'(erlang:'and'(bar, True))), +    false = ?GUARD(erlang:'not'(erlang:'not'(erlang:'and'(bar, True)))), + +   ok.  t_andalso(Config) when is_list(Config) ->      Bs = [true,false], diff --git a/lib/compiler/test/core_SUITE.erl b/lib/compiler/test/core_SUITE.erl index aa222c48de..428ad65364 100644 --- a/lib/compiler/test/core_SUITE.erl +++ b/lib/compiler/test/core_SUITE.erl @@ -24,7 +24,7 @@  	 dehydrated_itracer/1,nested_tries/1,  	 seq_in_guard/1,make_effect_seq/1,eval_is_boolean/1,  	 unsafe_case/1,nomatch_shadow/1,reversed_annos/1, -	 map_core_test/1,eval_case/1]). +	 map_core_test/1,eval_case/1,bad_boolean_guard/1]).  -include_lib("test_server/include/test_server.hrl"). @@ -50,7 +50,7 @@ groups() ->      [{p,test_lib:parallel(),        [dehydrated_itracer,nested_tries,seq_in_guard,make_effect_seq,         eval_is_boolean,unsafe_case,nomatch_shadow,reversed_annos, -       map_core_test,eval_case +       map_core_test,eval_case,bad_boolean_guard     ]}]. @@ -77,6 +77,7 @@ end_per_group(_GroupName, Config) ->  ?comp(reversed_annos).  ?comp(map_core_test).  ?comp(eval_case). +?comp(bad_boolean_guard).  try_it(Mod, Conf) ->      Src = filename:join(?config(data_dir, Conf), atom_to_list(Mod)), diff --git a/lib/compiler/test/core_SUITE_data/bad_boolean_guard.core b/lib/compiler/test/core_SUITE_data/bad_boolean_guard.core new file mode 100644 index 0000000000..318f8e3dc7 --- /dev/null +++ b/lib/compiler/test/core_SUITE_data/bad_boolean_guard.core @@ -0,0 +1,32 @@ +module 'bad_boolean_guard' ['bad_boolean_guard'/0, +			    'module_info'/0, +			    'module_info'/1] +    attributes [] +'bad_boolean_guard'/0 = +    fun () -> +	apply 'f'/1 +	    ('true') +'f'/1 = +    fun (_X_cor0) -> +	case _X_cor0 of +	  <X> +	      when try +		    call 'erlang':'and' +			('bad', _X_cor0) +		of <Try> -> +		    Try +		catch <T,R> -> +		    'false' -> +	      'not_ok' +	  <_X_cor3> when 'true' -> +	      'ok' +	end +'module_info'/0 = +    fun () -> +	call 'erlang':'get_module_info' +	    ('bad_boolean_guard') +'module_info'/1 = +    fun (_X_cor0) -> +	call 'erlang':'get_module_info' +	    ('bad_boolean_guard', _X_cor0) +end
\ No newline at end of file | 
