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

« back to all changes in this revision

Viewing changes to lib/compiler/src/cerl.erl

  • Committer: Bazaar Package Importer
  • Author(s): Soren Hansen
  • Date: 2007-05-01 16:57:10 UTC
  • mfrom: (1.1.9 upstream)
  • Revision ID: james.westby@ubuntu.com-20070501165710-2sapk0hp2gf3o0ip
Tags: 1:11.b.4-2ubuntu1
* Merge with Debian Unstable. Remaining changes:
  - Add -fno-stack-protector to fix broken crypto_drv.
* DebianMaintainerField update.

Show diffs side-by-side

added added

removed removed

Lines of Context:
3368
3368
list_to_records([]) ->
3369
3369
    [].
3370
3370
 
3371
 
lit_to_records(V, A) when is_integer(V) ->
3372
 
    #c_int{anno = A, val = V};
3373
 
lit_to_records(V, A) when is_float(V) ->
3374
 
    #c_float{anno = A, val = V};
3375
 
lit_to_records(V, A) when is_atom(V) ->
3376
 
    #c_atom{anno = A, val = V};
3377
 
lit_to_records([H | T] = V, A) ->
3378
 
    case is_print_char_list(V) of
3379
 
        true ->
3380
 
            #c_string{anno = A, val = V};
3381
 
        false ->
3382
 
            #c_cons{anno = A,
3383
 
                    hd = lit_to_records(H, []),
3384
 
                    tl = lit_to_records(T, [])}
3385
 
    end;
3386
 
lit_to_records([], A) ->
3387
 
    #c_nil{anno = A};
3388
 
lit_to_records(V, A) when is_tuple(V) ->
3389
 
    #c_tuple{anno = A, es = lit_list_to_records(tuple_to_list(V))}.
3390
 
 
3391
 
lit_list_to_records([T | Ts]) ->
3392
 
    [lit_to_records(T, []) | lit_list_to_records(Ts)];
3393
 
lit_list_to_records([]) ->
3394
 
    [].
3395
 
 
 
3371
lit_to_records(V, A) ->
 
3372
    #c_literal{anno = A, val = V}.
3396
3373
 
3397
3374
%% @spec from_records(Tree::record(record_types())) -> cerl()
3398
3375
%%
3414
3391
%% @see type/1
3415
3392
%% @see to_records/1
3416
3393
 
3417
 
from_records(#c_int{val = V, anno = As}) ->
3418
 
    ann_c_int(As, V);
3419
 
from_records(#c_float{val = V, anno = As}) ->
3420
 
    ann_c_float(As, V);
3421
 
from_records(#c_atom{val = V, anno = As}) ->
3422
 
    ann_c_atom(As, V);
3423
 
from_records(#c_char{val = V, anno = As}) ->
3424
 
    ann_c_char(As, V);
3425
 
from_records(#c_string{val = V, anno = As}) ->
3426
 
    ann_c_string(As, V);
3427
 
from_records(#c_nil{anno = As}) ->
3428
 
    ann_c_nil(As);
 
3394
from_records(#c_literal{val = V, anno = As}) ->
 
3395
    #literal{val = V, ann = As};
3429
3396
from_records(#c_binary{segments = Ss, anno = As}) ->
3430
3397
    ann_c_binary(As, from_records_list(Ss));
3431
3398
from_records(#c_bitstr{val = V, size = S, unit = U, type = T,