1  Syntax_Tools Release Notes

1 Syntax_Tools Release Notes

This document describes the changes made to the Syntax_Tools application.

  • erl_syntax_lib:annotate_bindings/1,2 will now properly annotate named functions and their arguments.

    Own Id: OTP-18380 Aux Id: PR-6523, GH-4733

  • The erl_syntax_lib:analyze_attribute/1 function would return {Name, {Name, Value}} instead of {Name, Value} (which is the documented return value).

    *** POTENTIAL INCOMPATIBILITY ***

    Own Id: OTP-17894 Aux Id: PR-5509

  • Added support for configurable features as described in EEP-60. Features can be enabled/disabled during compilation with options (-enable-feature Feature, -disable-feature Feature and +{feature, Feature, enable|disable}) to erlc as well as with directives (-feature(Feature, enable|disable).) in the file. Similar options can be used to erl for enabling/disabling features allowed at runtime. The new maybe expression (EEP-49) is fully supported as the feature maybe_expr. The features support is documented in the reference manual.

    Own Id: OTP-17988

  • The type spec of erl_syntax:function_type/2 has been fixed.

    Own Id: OTP-17302 Aux Id: PR-4705

  • Output parentheses around BitStringExpr when pretty-printing binary comprehensions.

    Own Id: OTP-17321

  • Support for handling abstract code created before OTP R15 has been dropped.

    Own Id: OTP-16678 Aux Id: PR-2627

  • The igor and erl_tidy modules have been the removed and are now maintained by their original author Richard Carlsson. They can be found at github.com/richcarl/igor and github.com/richcarl/erl_tidy, respectively.

    Own Id: OTP-17180

  • epp_dodger was unable to handle a parameterized macro in a function head.

    Own Id: OTP-17064 Aux Id: GH-4445, PR-2964

  • All functions in erl_tidy in syntax_tools have now been deprecated and are scheduled for removal in OTP 24. Users who still need it can find it at https://github.com/richcarl/erl_tidy.

    Own Id: OTP-17167 Aux Id: OTP-17046

  • In the syntax_tools application, the igor module and all functions in erl_tidy except file/2 have been deprecated.

    Own Id: OTP-17046

  • Minor documentation fix of erl_syntax:operator/1.

    Own Id: OTP-16732 Aux Id: PR-2659

  • Remove incomplete support for cond expressions.

    Own Id: OTP-15925 Aux Id: PR-2304

  • Improved indentation for code generated with erl_prettypr and tidier.

    Own Id: OTP-16386 Aux Id: PR-2451

  • Add missing calls to erl_syntax:unwrap/1. The nodes concerned represent names and values of maps and map types.

    Own Id: OTP-16012 Aux Id: PR-2348

  • All incorrect (that is, all) uses of "can not" has been corrected to "cannot" in source code comments, documentation, examples, and so on.

    Own Id: OTP-14282 Aux Id: PR-1891

  • Correct links in the documentation.

    Own Id: OTP-15761

  • Add missing calls to erl_syntax:unwrap/1. The nodes concerned represent names and values of maps and map types.

    Own Id: OTP-16012 Aux Id: PR-2348

  • Fix pretty-printing of type funs.

    Own Id: OTP-15519 Aux Id: ERL-815

  • Fix the TypeName type in erl_syntax_lib.

    Own Id: OTP-15207 Aux Id: PR-1888

  • Correct unfolding of the stacktrace variable.

    Own Id: OTP-15291 Aux Id: ERL-719

  • Correct erl_syntax:revert/1 bug regarding the types map() and tuple().

    Own Id: OTP-15294

  • Support bitstrings as literals in module erl_syntax.

    Own Id: OTP-15165 Aux Id: PR-1842

  • Update to use the new string api instead of the old.

    Own Id: OTP-15036

  • Add missing calls to erl_syntax:unwrap/1. The nodes concerned represent names and values of maps and map types.

    Own Id: OTP-16012 Aux Id: PR-2348

  • Fix a bug regarding reverting map types.

    Own Id: OTP-15098 Aux Id: ERIERL-177

  • Removed all old unused files in the documentation.

    Own Id: OTP-14475 Aux Id: ERL-409, PR-1493

  • General Unicode improvements.

    Own Id: OTP-14462

  • A process trapping exits and calling erl_tidy no longer hangs if an error occurs.

    Own Id: OTP-14471 Aux Id: ERL-413

  • Miscellaneous updates due to atoms containing arbitrary Unicode characters.

    Own Id: OTP-14285

  • Fix a bug regarding reverting map types.

    Own Id: OTP-15098 Aux Id: ERIERL-177

  • The address to the FSF in the license header has been updated.

    Own Id: OTP-14084

  • Fix a bug where erl_tidy crashed on the tilde character when printing to standard output.

    Own Id: OTP-13725 Aux Id: ERL-151, PR-1071

  • merl_transform could get into an infinite loop when syntactically incorrect text was passed to a merl:qquote/2,3 call.

    Own Id: OTP-13755

  • Improve types and specs in OTP documentation generated from Erlang source files.

    Own Id: OTP-13720 Aux Id: ERL-120

  • The abstract data type in erl_syntax is augmented with types and function specifications.

    The module erl_prettypr pretty prints types and function specification, and the output can be parsed.

    The types of record fields are no longer ignored. As a consequence erl_syntax_lib:analyze_record_field/1 returns {Default, Type} instead of Default. The functions analyze_record_attribute, analyze_attribute, analyze_form, and analyze_forms in the erl_syntax_lib module are also affected by this incompatible change.

    *** POTENTIAL INCOMPATIBILITY ***

    Own Id: OTP-12863

  • Use the new erl_anno module.

    Own Id: OTP-12732

  • The merl module has been added to the syntax_tools application. The Merl library is a simpler way to work with erl_syntax parse trees.

    Own Id: OTP-12769

  • Fix bad format of error in epp_dodger:parse_file/3

    Own Id: OTP-12406

  • Teach Maps to erl_syntax

    Affected functions:

    • erl_syntax:abstract/1
    • erl_syntax:concrete/1
    • erl_syntax:is_leaf/1
    • erl_syntax:is_literal/1

    Own Id: OTP-12265

  • The default encoding for Erlang source files is now UTF-8. As a temporary measure to ease the transition from the old default of Latin-1, if EDoc encounters byte sequences that are not valid UTF-8 sequences, EDoc will re-try in Latin-1 mode. This workaround will be removed in a future release.

    Own Id: OTP-12008

  • Fix reverting map in syntax_tools

    There was a bug in erl_syntax when running e.g. erl_syntax:revert_forms, affecting maps. Instead of getting Key/Value you got Key/Key in the resulting abstract form.

    Own Id: OTP-11930

  • Application upgrade (appup) files are corrected for the following applications:

    asn1, common_test, compiler, crypto, debugger, dialyzer, edoc, eldap, erl_docgen, et, eunit, gs, hipe, inets, observer, odbc, os_mon, otp_mibs, parsetools, percept, public_key, reltool, runtime_tools, ssh, syntax_tools, test_server, tools, typer, webtool, wx, xmerl

    A new test utility for testing appup files is added to test_server. This is now used by most applications in OTP.

    (Thanks to Tobias Schlager)

    Own Id: OTP-11744

  • Add implementation of having erl_tidy print to screen instead of writing to the file provided. (Thanks to Aaron France)

    Own Id: OTP-11632

  • Support Maps syntax in syntax_tools (Thanks to Anthony Ramine).

    Own Id: OTP-11663

  • In syntax_tools-1.6.12 (OTP R16B03) a bug was introduced which broke reverting of local implicit funs. Implicit funs were mistakenly thought to be using abstract terms for their name and arity. This has now been corrected. (Thanks to Anthony Ramine)

    Own Id: OTP-11576

  • The default encoding of Erlang files has been changed from ISO-8859-1 to UTF-8.

    The encoding of XML files has also been changed to UTF-8.

    Own Id: OTP-10907

  • Fix transformation of implicit funs in igor (Thanks to Anthony Ramine)

    Own Id: OTP-11506

  • Miscellaneous updates due to Unicode support.

    Own Id: OTP-10820

  • Support for Unicode has been implemented.

    Own Id: OTP-10302

  • Syntax Tools 1.6.9

    Minor bugfixes, spec annotations and documentation cleanup. Thanks to Richard Carlsson

    Own Id: OTP-10208

  • Minor suppressions and fixes of compilation warnings

    Own Id: OTP-10016

  • Variables are now now allowed in 'fun M:F/A' as suggested by Richard O'Keefe in EEP-23.

    The representation of 'fun M:F/A' in the abstract format has been changed in an incompatible way. Tools that directly read or manipulate the abstract format (such as parse transforms) may need to be updated. The compiler can handle both the new and the old format (i.e. extracting the abstract format from a pre-R15 BEAM file and compiling it using compile:forms/1,2 will work). The syntax_tools application can also handle both formats.

    *** POTENTIAL INCOMPATIBILITY ***

    Own Id: OTP-9643

  • Eliminate use of deprecated regexp module

    Own Id: OTP-9810

  • In a file containing declarations and comments without any empty lines between them, the recomment_forms() function would associate a multi-line comment with the declaration above it rather than the one following it. (Thanks to Richard Carlsson and Kostis Sagonas.)

    Own Id: OTP-9180

  • Miscellaneous updates

    Own Id: OTP-8976

  • Minor changes and clean-ups.

    Own Id: OTP-8709

  • The documentation is now possible to build in an open source environment after a number of bugs are fixed and some features are added in the documentation build process.

    - The arity calculation is updated.

    - The module prefix used in the function names for bif's are removed in the generated links so the links will look like "http://www.erlang.org/doc/man/erlang.html#append_element-2" instead of "http://www.erlang.org/doc/man/erlang.html#erlang:append_element-2".

    - Enhanced the menu positioning in the html documentation when a new page is loaded.

    - A number of corrections in the generation of man pages (thanks to Sergei Golovan)

    - The legal notice is taken from the xml book file so OTP's build process can be used for non OTP applications.

    Own Id: OTP-8343

  • The documentation is now built with open source tools (xsltproc and fop) that exists on most platforms. One visible change is that the frames are removed.

    Own Id: OTP-8201

  • Miscellaneous updates.

    Own Id: OTP-8190

  • Miscellaneous updates.

    Own Id: OTP-8038

  • Miscellaneous updates.

    Own Id: OTP-7877

  • Minor updates.

    Own Id: OTP-7642

  • Minor changes.

    Own Id: OTP-7388

  • Minor updates, mostly cosmetic.

    Own Id: OTP-7243

  • A missing directory (examples) has been added and another broken link in the documentation has been fixed.

    Own Id: OTP-6468

  • Fixed some broken links in the documentation.

    Own Id: OTP-6420

Miscellaneous changes.