From dbdfe605838ceb14aa8e3fdea3378fb1bd1044ef Mon Sep 17 00:00:00 2001 From: Paul Mineiro Date: Mon, 10 Aug 2009 21:05:41 +0000 Subject: [PATCH] --- ChangeLog | 3 +++ fw-pkgin/config | 2 +- src/lyet.erl | 10 ++-------- tests/testlyet.erl | 9 +++++++++ 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 987930b..6545b78 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,6 @@ +Version 0.2.0 + * handle structured match statements (duh) + Version 0.1.0 * Per Ulf's suggestion, rewrite local call (let_) for nicer syntax. diff --git a/fw-pkgin/config b/fw-pkgin/config index fa251c2..033617c 100644 --- a/fw-pkgin/config +++ b/fw-pkgin/config @@ -2,7 +2,7 @@ # environment variable FW_PACKAGE_DEFAULT_MAINTAINER if non-empty FW_PACKAGE_NAME="lyet" -FW_PACKAGE_VERSION="0.1.0" +FW_PACKAGE_VERSION="0.2.0" FW_PACKAGE_MAINTAINER="Paul Mineiro " FW_PACKAGE_SHORT_DESCRIPTION="Erlang parse transform to provide let like functionality." FW_PACKAGE_DESCRIPTION=`cat README` diff --git a/src/lyet.erl b/src/lyet.erl index 8591d27..1df62ba 100644 --- a/src/lyet.erl +++ b/src/lyet.erl @@ -62,20 +62,14 @@ parse_transform(Forms, Options) -> [Expr|Assignments] = lists:reverse(L), lists:foldl (fun (Assign, Acc) -> - { match, Line, { var, _, Var }, Val } = + { match, Line, Pattern, Val } = erl_syntax:revert (Assign), { call, Line, { 'fun', Line, { clauses, - [ { clause, - Line, - [ { var, Line, Var } ], - [], - [ Acc ] - } - ] + [ { clause, Line, [ Pattern ], [], [ Acc ] } ] } }, [ Val ] diff --git a/tests/testlyet.erl b/tests/testlyet.erl index 8ae19ee..e06c934 100644 --- a/tests/testlyet.erl +++ b/tests/testlyet.erl @@ -45,6 +45,12 @@ testmegathree (X) -> testmeganoassign () -> let_ (9 + 2). +testmegastructured (X) -> + let_ ({ _, X } = { dude, g (X) }, + { X, _ } = { h (X), wheres }, + { _, X } = { my, l (X) }, + { car, m (X) }). + testone (X) -> lyet:lyet (X = g (X), X = h (X), @@ -88,6 +94,9 @@ three_mega_test () -> noassign_mega_test () -> ?assertEqual (11, testmeganoassign ()). +structured_mega_test () -> + ?assertEqual ({ car, 11 }, testmegastructured (1)). + one_test () -> ?assertEqual (11, testone (1)).