Remove the "coding: utf-8" comment from all Erlang source files
Convert XML files to UTF-8
Merge branch 'maint'

* maint:
  [dialyzer] Fix a bug concerning the --gui and --wx options
Merge remote-tracking branch 'upstream/maint'

Conflicts:
	bootstrap/lib/stdlib/ebin/beam_lib.beam
	lib/public_key/test/erl_make_certs.erl
Forbid unsized fields in patterns of binary generators

It makes no sense to be able to do `<<...,Rest/binary>> <= ...` in a
comprehension. The related Dialyzer test is removed.
Merge branch 'maint'
Merge tag 'OTP_R16B01'

The R16B01 release

Conflicts:
	lib/sasl/vsn.mk
Merge branch 'nox/illegal-bitstring-gen-pattern/OTP-11186'

* nox/illegal-bitstring-gen-pattern/OTP-11186:
  Bootstrap added
  Simplify v3_core's translation of bit string generators
  Forbid unsized fields in patterns of binary generators
Merge branch 'maint'
Merge branch 'maint'
Merge branch 'maint'
Remove the GS-based GUI of Dialyzer

R17 will come without support for 'gs' so the old gs-based GUI of dialyzer
has been removed.
Remove the --wx option and promore the --gui to use the wx-based GUI
Support non top level letrecs in dialyzer

Dialyzer so far only supported letrecs at the top-level
and comprehension-like letrecs (i.e. that were directly applied)
in their body.

This commit address this issue by storing in the callgraph
bound letrec labels pointing to their functions. This information
is then used by the dataflow to properly lookup recursive
definitions.
EEP 37: Funs with names

This adds optional names to fun expressions. A named fun expression
is parsed as a tuple `{named_fun,Loc,Name,Clauses}` in erl_parse.

If a fun expression has a name, it must be present and be the same in
every of its clauses. The function name shadows the environment of the
expression shadowing the environment and it is shadowed by the
environment of the clauses' arguments. An unused function name triggers
a warning unless it is prefixed by _, just as every variable.
Variable _ is allowed as a function name.

It is not an error to put a named function in a record field default
value.

When transforming to Core Erlang, the named fun Fun is changed into
the following expression:

    letrec 'Fun'/Arity =
               fun (Args) ->
                       let <Fun> = 'Fun'/Arity
                       in Case
    in 'Fun'/Arity

where Args is the list of arguments of 'Fun'/Arity and Case the
Core Erlang expression corresponding to the clauses of Fun.

This transformation allows us to entirely skip any k_var to k_local
transformation in the fun's clauses bodies.
Test named funs
Merge remote-tracking branch 'origin/kostis/dialyzer_hipe-remove-gs'
fix -Wno_behaviours doc error in dialyzer man page

The description of the -Wno_behaviours in the dialyzer man page incorrectly
includes a "***" footnote marker, indicating that it's an option that turns
on a warning rather than turning it off. Since the option actually turns
off a warning, remove the marker. This fix makes the documentation match
that obtained from dialyzer --help.
Fix an erroneous spec

The branch that patched this file to handle the new "named funs"
added an extra argument to the main function of the module but
forgot to update its spec.
[dialyzer] Re-work the handling of opaque types

It is now OK to inspect and modify the internals of opaque types within
the scope of the module.

The contracts are used for decorating types with opaqueness when it is
harmless to do so. The opaqueness is propagated by the typesig module
and also by the dataflow module.

A lot of details have been fixed or updated. In particular the modules
erl_types and erl_bif_types have been modified extensively.

The version in vsn.mk has been updated to 2.7. The reason is a
modification of #opaque{} in erl_types.

Dialyzer seems to be about five percent slower than it used to be.