'please report this bug'

Michael McDaniel <>
Tue Mar 29 01:30:48 CEST 2005


I discovered the following consistency check problem due to an incorrect assignment
I had in some real code.  I distilled down to the nonsense code below to reproduce
the problem.

~Michael

$ uname -a
Linux fangora 2.6.4-52-default #1 Wed Apr 7 02:08:30 UTC 2004 i686 i686 i386 GNU/Linux

$ erlc foo.erl
 foo: function out/1+15:
  Internal consistency check failed - please report this bug.
  Instruction: {get_tuple_element,{x,1},2,{x,2}}
  Error:       {bad_type,{needed,{tuple_element,3}},{actual,{tuple,2}}}:
 
 ./foo.erl:17: Warning: variable 'Arg' is unused
 ./foo.erl:22: Warning: variable 'Rr' is unused
 ./foo.erl:27: Warning: wrong number of arguments in format call
 ./foo.erl:33: Warning: this clause cannot match because a previous clause at
 line 25 always matches

-------------------------------------------------------------------------------
% a nonsense program to demonstrate the above Internal consistency check bug
%
-module(foo).
-author('Michael McDaniel dba Automated Systems, ').
-compile(export_all).


-record( ics, {       a = "a" ,
		      b     = 'b' ,
		      x	       = "" 
}).


  out(Arg) ->

   Tag = true ,

   R = #ics{x=233} ,
   { _, Rr} = R#ics{} ,	 %% WRONG assignment


   if Tag  ->
   [ 
     { html, io_lib:format('~s~s~n~p~n~s~n',
					[R#ics.a ,
				         R#ics.b ,
					 R#ics.x ]) }  
   ] ;

   true ->
   [ 
     { html, io_lib:format('~s~n',   [Tag])}
   ] 
   end .

%% end



More information about the erlang-questions mailing list