@@ -22233,36 +22233,6 @@ \subsubsection{Being a Subtype}
22233
22233
each of the premises of $R$,
22234
22234
continuing until a rule with no premises is reached.
22235
22235
22236
- \commentary{%
22237
- For rule \SrnNull, note that the \code{Null} type
22238
- is a subtype of all non-$\bot$ types,
22239
- even though it doesn't actually extend or implement those types.
22240
- The other types are effectively treated as if they were nullable,
22241
- which makes the null object (\ref{null}) assignable to them.%
22242
- }
22243
-
22244
- \LMHash{}%
22245
- The first premise in the
22246
- rules~\SrnLeftTypeAlias{} and~\SrnRightTypeAlias{}
22247
- is a type alias declaration.
22248
- This premise is satisfied in each of the following situations:
22249
-
22250
- \begin{itemize}
22251
- \item A non-generic type alias named $F$ is declared.
22252
- In this case $s$ is zero,
22253
- no assumptions are made about the existence
22254
- of any formal type parameters,
22255
- and actual type argument lists are omitted everywhere in the rule.
22256
- \item We may choose $s$ and \List{X}{1}{s} such that the following holds:
22257
- A generic type alias named $F$ is declared,
22258
- with formal type parameters \List{X}{1}{s}.
22259
- \commentary{%
22260
- Each formal type parameter $X_j$ may have a bound,
22261
- but the bounds are never used in this context,
22262
- so we do not introduce metavariables for them.%
22263
- }
22264
- \end{itemize}
22265
-
22266
22236
\LMHash{}%
22267
22237
Rule~\SrnRightFunction{} has as a premise that `$T$ is a function type'.
22268
22238
This means that $T$ is a type of one of the forms introduced in
@@ -22300,14 +22270,14 @@ \subsubsection{Being a Subtype}
22300
22270
}
22301
22271
22302
22272
\commentary{%
22303
- The last premise of rule~\SrnSuperinterface {}
22273
+ The last premise of rule~\SrnNominal {}
22304
22274
substitutes the actual type arguments \List{S}{1}{s} for the
22305
22275
formal type parameters \List{X}{1}{s},
22306
22276
because \List{T}{1}{m} may contain those formal type parameters.%
22307
22277
}
22308
22278
22309
22279
\commentary{%
22310
- The rules~\SrnCovariance{} and~\SrnSuperinterface {}
22280
+ The rules~\SrnCovariance{} and~\SrnNominal {}
22311
22281
are applicable to interfaces,
22312
22282
but they can be used with classes as well,
22313
22283
because a non-generic class $C$ which is used as a type
0 commit comments