@@ -11593,7 +11593,7 @@ \subsubsection{Sets}
11593
11593
and it is evaluated at run time.
11594
11594
Only run-time set literals can be mutated after they are created.
11595
11595
% This error can occur because being constant is a dynamic property, here.
11596
- Attempting to mutate a constant set literal
11596
+ Attempting to mutate a constant set literal
11597
11597
will result in a \DynamicError{dynamic error}.
11598
11598
11599
11599
\commentary{%
@@ -23289,6 +23289,34 @@ \subsection{Functions Dealing with Extreme Types}
23289
23289
and then recursively taking \TopMergeTypeName{} of the rest.
23290
23290
\commentary{The ordering of the arguments makes no difference.}
23291
23291
23292
+ \LMHash{}%
23293
+ We generalize \TopMergeTypeName{} such that
23294
+ it can be applied to two or more member signatures rather than types.
23295
+ The case with more than two member signatures is defined in the same way as
23296
+ the case with more than two types.
23297
+ With member signatures $m_1$ and $m_2$
23298
+ that are structurally identical modulo the choice of top types
23299
+ and the occurrences of the modifier \COVARIANT,
23300
+ \TopMergeType{$m_1$}{$m_2$} is a member signature $m$ such
23301
+ that every pair of types $T_1$ and $T_2$ that occur in $m_1$ respectively $m_2$
23302
+ yields \TopMergeType{$T_1$}{$T_2$} in the result,
23303
+ the modifier \COVARIANT{} occurs on every parameter in $m$
23304
+ where the corresponding parameter in $m_1$ or in $m_2$ has that modifier,
23305
+ and all other non-type parts of $m_1$ and $m_2$ occur identically in the result.
23306
+
23307
+ \commentary{%
23308
+ For example,
23309
+
23310
+ \noindent
23311
+ \TopMergeType{\VOID\,\,m(List<\DYNAMIC>)}
23312
+ {\DYNAMIC\,\,m(\COVARIANT\,\,List<Object?>)}
23313
+
23314
+ \noindent
23315
+ is the member signature
23316
+ \code{Object?\,\,m(\COVARIANT\,\,List<Object?>)}.%
23317
+ }
23318
+
23319
+
23292
23320
\LMHash{}%
23293
23321
The \IndexCustom{\IsTopTypeName}{isTopType@\IsTopTypeName}
23294
23322
predicate is true for any type which is in
@@ -23537,6 +23565,21 @@ \subsection{Type Normalization}
23537
23565
\end{displaymath}
23538
23566
}
23539
23567
23568
+ \LMHash{}%
23569
+ We generalize \NormalizedTypeOfName{} such that
23570
+ it can be applied to a member signature rather than a type.
23571
+ This maps a member signature $m$ to a member signature $m'$ such
23572
+ that every type $T$ that occurs in $m$ is replaced by
23573
+ \NormalizedTypeOf{$T$}, and all other parts of $m'$ are identical to
23574
+ the corresponding part of $m$.
23575
+
23576
+ \commentary{%
23577
+ For example,
23578
+ \NormalizedTypeOf{\VOID\,\,m(\COVARIANT\,\,FutureOr<Object>)}
23579
+ is the member signature
23580
+ \code{\VOID\,\,m(\COVARIANT\,\,Object)}.%
23581
+ }
23582
+
23540
23583
23541
23584
\subsection{The Canonical Syntax of Types}
23542
23585
\LMLabel{theCanonicalSyntaxOfTypes}
0 commit comments