@@ -11588,7 +11588,7 @@ \subsubsection{Sets}
1158811588and it is evaluated at run time.
1158911589Only run-time set literals can be mutated after they are created.
1159011590% 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
1159211592will result in a \DynamicError{dynamic error}.
1159311593
1159411594\commentary{%
@@ -23278,6 +23278,34 @@ \subsection{Functions Dealing with Extreme Types}
2327823278and then recursively taking \TopMergeTypeName{} of the rest.
2327923279\commentary{The ordering of the arguments makes no difference.}
2328023280
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+
2328123309\LMHash{}%
2328223310The \IndexCustom{\IsTopTypeName}{isTopType@\IsTopTypeName}
2328323311predicate is true for any type which is in
@@ -23526,6 +23554,21 @@ \subsection{Type Normalization}
2352623554\end{displaymath}
2352723555}
2352823556
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+
2352923572
2353023573\subsection{The Canonical Syntax of Types}
2353123574\LMLabel{theCanonicalSyntaxOfTypes}
0 commit comments