@@ -22181,36 +22181,6 @@ \subsubsection{Being a Subtype}
22181
22181
each of the premises of $R$,
22182
22182
continuing until a rule with no premises is reached.
22183
22183
22184
- \commentary{%
22185
- For rule \SrnNull, note that the \code{Null} type
22186
- is a subtype of all non-$\bot$ types,
22187
- even though it doesn't actually extend or implement those types.
22188
- The other types are effectively treated as if they were nullable,
22189
- which makes the null object (\ref{null}) assignable to them.%
22190
- }
22191
-
22192
- \LMHash{}%
22193
- The first premise in the
22194
- rules~\SrnLeftTypeAlias{} and~\SrnRightTypeAlias{}
22195
- is a type alias declaration.
22196
- This premise is satisfied in each of the following situations:
22197
-
22198
- \begin{itemize}
22199
- \item A non-generic type alias named $F$ is declared.
22200
- In this case $s$ is zero,
22201
- no assumptions are made about the existence
22202
- of any formal type parameters,
22203
- and actual type argument lists are omitted everywhere in the rule.
22204
- \item We may choose $s$ and \List{X}{1}{s} such that the following holds:
22205
- A generic type alias named $F$ is declared,
22206
- with formal type parameters \List{X}{1}{s}.
22207
- \commentary{%
22208
- Each formal type parameter $X_j$ may have a bound,
22209
- but the bounds are never used in this context,
22210
- so we do not introduce metavariables for them.%
22211
- }
22212
- \end{itemize}
22213
-
22214
22184
\LMHash{}%
22215
22185
Rule~\SrnRightFunction{} has as a premise that `$T$ is a function type'.
22216
22186
This means that $T$ is a type of one of the forms introduced in
@@ -22248,14 +22218,14 @@ \subsubsection{Being a Subtype}
22248
22218
}
22249
22219
22250
22220
\commentary{%
22251
- The last premise of rule~\SrnSuperinterface {}
22221
+ The last premise of rule~\SrnNominal {}
22252
22222
substitutes the actual type arguments \List{S}{1}{s} for the
22253
22223
formal type parameters \List{X}{1}{s},
22254
22224
because \List{T}{1}{m} may contain those formal type parameters.%
22255
22225
}
22256
22226
22257
22227
\commentary{%
22258
- The rules~\SrnCovariance{} and~\SrnSuperinterface {}
22228
+ The rules~\SrnCovariance{} and~\SrnNominal {}
22259
22229
are applicable to interfaces,
22260
22230
but they can be used with classes as well,
22261
22231
because a non-generic class $C$ which is used as a type
0 commit comments