@@ -11588,7 +11588,7 @@ \subsubsection{Sets}
11588
11588
and it is evaluated at run time.
11589
11589
Only run-time set literals can be mutated after they are created.
11590
11590
% This error can occur because being constant is a dynamic property, here.
11591
- Attempting to mutate a constant set literal
11591
+ Attempting to mutate a constant set literal
11592
11592
will result in a \DynamicError{dynamic error}.
11593
11593
11594
11594
\commentary{%
@@ -23278,6 +23278,34 @@ \subsection{Functions Dealing with Extreme Types}
23278
23278
and then recursively taking \TopMergeTypeName{} of the rest.
23279
23279
\commentary{The ordering of the arguments makes no difference.}
23280
23280
23281
+ \LMHash{}%
23282
+ We generalize \TopMergeTypeName{} such that
23283
+ it can be applied to two or more member signatures rather than types.
23284
+ The case with more than two member signatures is defined in the same way as
23285
+ the case with more than two types.
23286
+ With member signatures $m_1$ and $m_2$
23287
+ that are structurally identical modulo the choice of top types
23288
+ and the occurrences of the modifier \COVARIANT,
23289
+ \TopMergeType{$m_1$}{$m_2$} is a member signature $m$ such
23290
+ that every pair of types $T_1$ and $T_2$ that occur in $m_1$ respectively $m_2$
23291
+ yields \TopMergeType{$T_1$}{$T_2$} in the result,
23292
+ the modifier \COVARIANT{} occurs on every parameter in $m$
23293
+ where the corresponding parameter in $m_1$ or in $m_2$ has that modifier,
23294
+ and all other non-type parts of $m_1$ and $m_2$ occur identically in the result.
23295
+
23296
+ \commentary{%
23297
+ For example,
23298
+
23299
+ \noindent
23300
+ \TopMergeType{\VOID\,\,m(List<\DYNAMIC>)}
23301
+ {\DYNAMIC\,\,m(\COVARIANT\,\,List<Object?>)}
23302
+
23303
+ \noindent
23304
+ is the member signature
23305
+ \code{Object?\,\,m(\COVARIANT\,\,List<Object?>)}.%
23306
+ }
23307
+
23308
+
23281
23309
\LMHash{}%
23282
23310
The \IndexCustom{\IsTopTypeName}{isTopType@\IsTopTypeName}
23283
23311
predicate is true for any type which is in
@@ -23526,6 +23554,21 @@ \subsection{Type Normalization}
23526
23554
\end{displaymath}
23527
23555
}
23528
23556
23557
+ \LMHash{}%
23558
+ We generalize \NormalizedTypeOfName{} such that
23559
+ it can be applied to a member signature rather than a type.
23560
+ This maps a member signature $m$ to a member signature $m'$ such
23561
+ that every type $T$ that occurs in $m$ is replaced by
23562
+ \NormalizedTypeOf{$T$}, and all other parts of $m'$ are identical to
23563
+ the corresponding part of $m$.
23564
+
23565
+ \commentary{%
23566
+ For example,
23567
+ \NormalizedTypeOf{\VOID\,\,m(\COVARIANT\,\,FutureOr<Object>)}
23568
+ is the member signature
23569
+ \code{\VOID\,\,m(\COVARIANT\,\,Object)}.%
23570
+ }
23571
+
23529
23572
23530
23573
\subsection{The Canonical Syntax of Types}
23531
23574
\LMLabel{theCanonicalSyntaxOfTypes}
0 commit comments