aboutsummaryrefslogtreecommitdiffstats
path: root/lib/syntax_tools/src/merl_transform.erl
AgeCommit message (Collapse)Author
2016-11-23Update Syntax Tools license headersRichard Carlsson
This makes it clear that Apache 2.0 applies, without dropping the old LGPL licensing, and makes all the Syntax Tools file headers look the same as upstream.
2016-07-09Fix infinite loop in merl_transformPéter Gömöri
This can happen when a syntactically incorrect text is passed to a merl:qquote/2,/3 call. The parse transform optimizes calls to some functions in merl by converting strings into templates at compile time. If this evaluation fails (in eval_call/4 - for example because of a sytanx error in the parsed text) the original function call should be kept unchanged. However in case of qquote/3 the call is converted into a combination of quote/2 and subst/2, but upon failure the original qquote/3 call is substituted into the wrong place. E.g.: this expression merl:qquote(Pos, Text, Env) is first converted to merl:subst(merl:quote(Pos, Text), Env) then if evaluating the quote call fails into merl:subst(merl:qquote(Pos, Text, Env), Env) and the expansion is run again on the internal qquote/3 argument resulting in an infinite loop. This is now fixed so in case of failure the original qquote/3 call is kept.
2015-09-15syntax_tools: Use the erl_anno module a bit moreHans Bolinder
2015-05-22Include Merl in Syntax ToolsRichard Carlsson