From 33296501241d80df3dec8ee422bf8743558258af Mon Sep 17 00:00:00 2001
From: Doug Rohrer
Date: Tue, 4 Oct 2016 17:10:40 -0400
Subject: Fix reference to automatic `undefined` field declared types.
In 8ce35b287fb50a6845fccf6a13c672aae303dc91 automatic insertion of `undefined` for record fields without initializers was removed, but this was not noted in the documentation. Add a warning about this change using similar verbiage as the original docs.
---
system/doc/reference_manual/typespec.xml | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/system/doc/reference_manual/typespec.xml b/system/doc/reference_manual/typespec.xml
index 1899efd5f3..4421529dda 100644
--- a/system/doc/reference_manual/typespec.xml
+++ b/system/doc/reference_manual/typespec.xml
@@ -409,11 +409,13 @@
The initial values for fields are to be compatible
with (that is, a member of) the corresponding types.
This is checked by the compiler and results in a compilation error
- if a violation is detected. For fields without initial values,
- the singleton type 'undefined' is added to all declared types.
- In other words, the following two record declarations have identical
- effects:
+ if a violation is detected.
+
+ In previous (pre-19) versions of Erlang, for fields without initial values,
+ the singleton type 'undefined' was added to all declared types.
+ In other words, the following two record declarations had identical
+ effects:
-record(rec, {f1 = 42 :: integer(),
f2 :: float(),
@@ -423,9 +425,10 @@
f2 :: 'undefined' | float(),
f3 :: 'undefined' | 'a' | 'b'}).
- For this reason, it is recommended that records contain initializers,
- whenever possible.
+ This is no longer the case. If you require 'undefined' in your record field
+ type, you must explicitly add it to the typespec, as in the 2nd example.
+
Any record, containing type information or not, once defined,
can be used as a type using the following syntax:
--
cgit v1.2.3
From 0411bfded2ee9aefb8178a47d139b54913490d5b Mon Sep 17 00:00:00 2001
From: Doug Rohrer
Date: Wed, 5 Oct 2016 11:05:44 -0400
Subject: Update per review comments.
---
system/doc/reference_manual/typespec.xml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/system/doc/reference_manual/typespec.xml b/system/doc/reference_manual/typespec.xml
index 4421529dda..ced584ed35 100644
--- a/system/doc/reference_manual/typespec.xml
+++ b/system/doc/reference_manual/typespec.xml
@@ -411,8 +411,8 @@
This is checked by the compiler and results in a compilation error
if a violation is detected.
-
- In previous (pre-19) versions of Erlang, for fields without initial values,
+
+ Before Erlang/OTP 19, for fields without initial values,
the singleton type 'undefined' was added to all declared types.
In other words, the following two record declarations had identical
effects:
@@ -428,7 +428,7 @@
This is no longer the case. If you require 'undefined' in your record field
type, you must explicitly add it to the typespec, as in the 2nd example.
-
+
Any record, containing type information or not, once defined,
can be used as a type using the following syntax:
--
cgit v1.2.3