瀏覽代碼

Fixed issue whereby element(1, ...) is called on every tuple nested inside a pretty printed record regardless of size.

Modified unit test to test 0 size tuple case.
pull/199/head
Shane Howley 11 年之前
父節點
當前提交
d58e633e15
共有 2 個檔案被更改,包括 6 行新增4 行删除
  1. +4
    -2
      src/lager.erl
  2. +2
    -2
      test/pr_nested_record_test.erl

+ 4
- 2
src/lager.erl 查看文件

@ -378,8 +378,10 @@ pr(Record, _) ->
Record. Record.
zip([FieldName|RecordFields], [FieldValue|Record], Module, ToReturn) -> zip([FieldName|RecordFields], [FieldValue|Record], Module, ToReturn) ->
case is_tuple(FieldValue) andalso is_atom(element(1, FieldValue))
andalso is_record_known(FieldValue, Module) of
case is_tuple(FieldValue) andalso
tuple_size(FieldValue) > 0 andalso
is_atom(element(1, FieldValue)) andalso
is_record_known(FieldValue, Module) of
false -> false ->
zip(RecordFields, Record, Module, [{FieldName, FieldValue}|ToReturn]); zip(RecordFields, Record, Module, [{FieldName, FieldValue}|ToReturn]);
_Else -> _Else ->

+ 2
- 2
test/pr_nested_record_test.erl 查看文件

@ -12,10 +12,10 @@
nested_record_test() -> nested_record_test() ->
A = #a{field1 = x, field2 = y}, A = #a{field1 = x, field2 = y},
B = #b{field1 = A, field2 = z},
B = #b{field1 = A, field2 = {}},
Pr_B = lager:pr(B, ?MODULE), Pr_B = lager:pr(B, ?MODULE),
?assertEqual({'$lager_record', b, ?assertEqual({'$lager_record', b,
[{field1, {'$lager_record', a, [{field1, {'$lager_record', a,
[{field1, x},{field2, y}]}}, [{field1, x},{field2, y}]}},
{field2, z}]},
{field2, {}}]},
Pr_B). Pr_B).

Loading…
取消
儲存