| // Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| /// @assertion A type T is more specific than a type S, written T << S, if one |
| /// of the following conditions is met: |
| /// • T is S. |
| /// • T is ⊥ |
| /// • S is dynamic. |
| /// • S is a direct supertype of T. |
| /// • T is a type parameter and S is the upper bound of T. |
| /// • T is a type parameter and S is Object. |
| /// • T is of the form I<T1, ..., Tn > and S is of the form I <S1, ..., Sn> |
| /// and Ti << Si 1 <= i <= n. |
| /// • T and S are both function types, and T << S under the rules of section |
| /// (Types/Function Types). |
| /// • T is a function type and S is Function. |
| /// • T << U and U << S. |
| /// << is a partial order on types. T is a subtype of S, written T <: S, iff |
| /// [⊥/Dynamic]T << S. |
| /// . . . |
| /// An interface type T may be assigned to a type S, written T <=> S, if either |
| /// T <: S or S <: T. |
| /// @description Stress transitivity check: creates hierarchy of classes |
| /// "C500 <: C499 <: ... <: C1 <: C and checks that C1026 is a subtype of C. |
| /// @author sgrekhov@unipro.ru |
| |
| import "../../../Utils/expect.dart"; |
| |
| class C {} |
| |
| main() { |
| Expect.isTrue(C500() is C); |
| Expect.runtimeIsType<C>(C500()); |
| } |
| |
| class C1 extends C {} |
| class C2 extends C1 {} |
| class C3 extends C2 {} |
| class C4 extends C3 {} |
| class C5 extends C4 {} |
| class C6 extends C5 {} |
| class C7 extends C6 {} |
| class C8 extends C7 {} |
| class C9 extends C8 {} |
| class C10 extends C9 {} |
| class C11 extends C10 {} |
| class C12 extends C11 {} |
| class C13 extends C12 {} |
| class C14 extends C13 {} |
| class C15 extends C14 {} |
| class C16 extends C15 {} |
| class C17 extends C16 {} |
| class C18 extends C17 {} |
| class C19 extends C18 {} |
| class C20 extends C19 {} |
| class C21 extends C20 {} |
| class C22 extends C21 {} |
| class C23 extends C22 {} |
| class C24 extends C23 {} |
| class C25 extends C24 {} |
| class C26 extends C25 {} |
| class C27 extends C26 {} |
| class C28 extends C27 {} |
| class C29 extends C28 {} |
| class C30 extends C29 {} |
| class C31 extends C30 {} |
| class C32 extends C31 {} |
| class C33 extends C32 {} |
| class C34 extends C33 {} |
| class C35 extends C34 {} |
| class C36 extends C35 {} |
| class C37 extends C36 {} |
| class C38 extends C37 {} |
| class C39 extends C38 {} |
| class C40 extends C39 {} |
| class C41 extends C40 {} |
| class C42 extends C41 {} |
| class C43 extends C42 {} |
| class C44 extends C43 {} |
| class C45 extends C44 {} |
| class C46 extends C45 {} |
| class C47 extends C46 {} |
| class C48 extends C47 {} |
| class C49 extends C48 {} |
| class C50 extends C49 {} |
| class C51 extends C50 {} |
| class C52 extends C51 {} |
| class C53 extends C52 {} |
| class C54 extends C53 {} |
| class C55 extends C54 {} |
| class C56 extends C55 {} |
| class C57 extends C56 {} |
| class C58 extends C57 {} |
| class C59 extends C58 {} |
| class C60 extends C59 {} |
| class C61 extends C60 {} |
| class C62 extends C61 {} |
| class C63 extends C62 {} |
| class C64 extends C63 {} |
| class C65 extends C64 {} |
| class C66 extends C65 {} |
| class C67 extends C66 {} |
| class C68 extends C67 {} |
| class C69 extends C68 {} |
| class C70 extends C69 {} |
| class C71 extends C70 {} |
| class C72 extends C71 {} |
| class C73 extends C72 {} |
| class C74 extends C73 {} |
| class C75 extends C74 {} |
| class C76 extends C75 {} |
| class C77 extends C76 {} |
| class C78 extends C77 {} |
| class C79 extends C78 {} |
| class C80 extends C79 {} |
| class C81 extends C80 {} |
| class C82 extends C81 {} |
| class C83 extends C82 {} |
| class C84 extends C83 {} |
| class C85 extends C84 {} |
| class C86 extends C85 {} |
| class C87 extends C86 {} |
| class C88 extends C87 {} |
| class C89 extends C88 {} |
| class C90 extends C89 {} |
| class C91 extends C90 {} |
| class C92 extends C91 {} |
| class C93 extends C92 {} |
| class C94 extends C93 {} |
| class C95 extends C94 {} |
| class C96 extends C95 {} |
| class C97 extends C96 {} |
| class C98 extends C97 {} |
| class C99 extends C98 {} |
| class C100 extends C99 {} |
| class C101 extends C100 {} |
| class C102 extends C101 {} |
| class C103 extends C102 {} |
| class C104 extends C103 {} |
| class C105 extends C104 {} |
| class C106 extends C105 {} |
| class C107 extends C106 {} |
| class C108 extends C107 {} |
| class C109 extends C108 {} |
| class C110 extends C109 {} |
| class C111 extends C110 {} |
| class C112 extends C111 {} |
| class C113 extends C112 {} |
| class C114 extends C113 {} |
| class C115 extends C114 {} |
| class C116 extends C115 {} |
| class C117 extends C116 {} |
| class C118 extends C117 {} |
| class C119 extends C118 {} |
| class C120 extends C119 {} |
| class C121 extends C120 {} |
| class C122 extends C121 {} |
| class C123 extends C122 {} |
| class C124 extends C123 {} |
| class C125 extends C124 {} |
| class C126 extends C125 {} |
| class C127 extends C126 {} |
| class C128 extends C127 {} |
| class C129 extends C128 {} |
| class C130 extends C129 {} |
| class C131 extends C130 {} |
| class C132 extends C131 {} |
| class C133 extends C132 {} |
| class C134 extends C133 {} |
| class C135 extends C134 {} |
| class C136 extends C135 {} |
| class C137 extends C136 {} |
| class C138 extends C137 {} |
| class C139 extends C138 {} |
| class C140 extends C139 {} |
| class C141 extends C140 {} |
| class C142 extends C141 {} |
| class C143 extends C142 {} |
| class C144 extends C143 {} |
| class C145 extends C144 {} |
| class C146 extends C145 {} |
| class C147 extends C146 {} |
| class C148 extends C147 {} |
| class C149 extends C148 {} |
| class C150 extends C149 {} |
| class C151 extends C150 {} |
| class C152 extends C151 {} |
| class C153 extends C152 {} |
| class C154 extends C153 {} |
| class C155 extends C154 {} |
| class C156 extends C155 {} |
| class C157 extends C156 {} |
| class C158 extends C157 {} |
| class C159 extends C158 {} |
| class C160 extends C159 {} |
| class C161 extends C160 {} |
| class C162 extends C161 {} |
| class C163 extends C162 {} |
| class C164 extends C163 {} |
| class C165 extends C164 {} |
| class C166 extends C165 {} |
| class C167 extends C166 {} |
| class C168 extends C167 {} |
| class C169 extends C168 {} |
| class C170 extends C169 {} |
| class C171 extends C170 {} |
| class C172 extends C171 {} |
| class C173 extends C172 {} |
| class C174 extends C173 {} |
| class C175 extends C174 {} |
| class C176 extends C175 {} |
| class C177 extends C176 {} |
| class C178 extends C177 {} |
| class C179 extends C178 {} |
| class C180 extends C179 {} |
| class C181 extends C180 {} |
| class C182 extends C181 {} |
| class C183 extends C182 {} |
| class C184 extends C183 {} |
| class C185 extends C184 {} |
| class C186 extends C185 {} |
| class C187 extends C186 {} |
| class C188 extends C187 {} |
| class C189 extends C188 {} |
| class C190 extends C189 {} |
| class C191 extends C190 {} |
| class C192 extends C191 {} |
| class C193 extends C192 {} |
| class C194 extends C193 {} |
| class C195 extends C194 {} |
| class C196 extends C195 {} |
| class C197 extends C196 {} |
| class C198 extends C197 {} |
| class C199 extends C198 {} |
| class C200 extends C199 {} |
| class C201 extends C200 {} |
| class C202 extends C201 {} |
| class C203 extends C202 {} |
| class C204 extends C203 {} |
| class C205 extends C204 {} |
| class C206 extends C205 {} |
| class C207 extends C206 {} |
| class C208 extends C207 {} |
| class C209 extends C208 {} |
| class C210 extends C209 {} |
| class C211 extends C210 {} |
| class C212 extends C211 {} |
| class C213 extends C212 {} |
| class C214 extends C213 {} |
| class C215 extends C214 {} |
| class C216 extends C215 {} |
| class C217 extends C216 {} |
| class C218 extends C217 {} |
| class C219 extends C218 {} |
| class C220 extends C219 {} |
| class C221 extends C220 {} |
| class C222 extends C221 {} |
| class C223 extends C222 {} |
| class C224 extends C223 {} |
| class C225 extends C224 {} |
| class C226 extends C225 {} |
| class C227 extends C226 {} |
| class C228 extends C227 {} |
| class C229 extends C228 {} |
| class C230 extends C229 {} |
| class C231 extends C230 {} |
| class C232 extends C231 {} |
| class C233 extends C232 {} |
| class C234 extends C233 {} |
| class C235 extends C234 {} |
| class C236 extends C235 {} |
| class C237 extends C236 {} |
| class C238 extends C237 {} |
| class C239 extends C238 {} |
| class C240 extends C239 {} |
| class C241 extends C240 {} |
| class C242 extends C241 {} |
| class C243 extends C242 {} |
| class C244 extends C243 {} |
| class C245 extends C244 {} |
| class C246 extends C245 {} |
| class C247 extends C246 {} |
| class C248 extends C247 {} |
| class C249 extends C248 {} |
| class C250 extends C249 {} |
| class C251 extends C250 {} |
| class C252 extends C251 {} |
| class C253 extends C252 {} |
| class C254 extends C253 {} |
| class C255 extends C254 {} |
| class C256 extends C255 {} |
| class C257 extends C256 {} |
| class C258 extends C257 {} |
| class C259 extends C258 {} |
| class C260 extends C259 {} |
| class C261 extends C260 {} |
| class C262 extends C261 {} |
| class C263 extends C262 {} |
| class C264 extends C263 {} |
| class C265 extends C264 {} |
| class C266 extends C265 {} |
| class C267 extends C266 {} |
| class C268 extends C267 {} |
| class C269 extends C268 {} |
| class C270 extends C269 {} |
| class C271 extends C270 {} |
| class C272 extends C271 {} |
| class C273 extends C272 {} |
| class C274 extends C273 {} |
| class C275 extends C274 {} |
| class C276 extends C275 {} |
| class C277 extends C276 {} |
| class C278 extends C277 {} |
| class C279 extends C278 {} |
| class C280 extends C279 {} |
| class C281 extends C280 {} |
| class C282 extends C281 {} |
| class C283 extends C282 {} |
| class C284 extends C283 {} |
| class C285 extends C284 {} |
| class C286 extends C285 {} |
| class C287 extends C286 {} |
| class C288 extends C287 {} |
| class C289 extends C288 {} |
| class C290 extends C289 {} |
| class C291 extends C290 {} |
| class C292 extends C291 {} |
| class C293 extends C292 {} |
| class C294 extends C293 {} |
| class C295 extends C294 {} |
| class C296 extends C295 {} |
| class C297 extends C296 {} |
| class C298 extends C297 {} |
| class C299 extends C298 {} |
| class C300 extends C299 {} |
| class C301 extends C300 {} |
| class C302 extends C301 {} |
| class C303 extends C302 {} |
| class C304 extends C303 {} |
| class C305 extends C304 {} |
| class C306 extends C305 {} |
| class C307 extends C306 {} |
| class C308 extends C307 {} |
| class C309 extends C308 {} |
| class C310 extends C309 {} |
| class C311 extends C310 {} |
| class C312 extends C311 {} |
| class C313 extends C312 {} |
| class C314 extends C313 {} |
| class C315 extends C314 {} |
| class C316 extends C315 {} |
| class C317 extends C316 {} |
| class C318 extends C317 {} |
| class C319 extends C318 {} |
| class C320 extends C319 {} |
| class C321 extends C320 {} |
| class C322 extends C321 {} |
| class C323 extends C322 {} |
| class C324 extends C323 {} |
| class C325 extends C324 {} |
| class C326 extends C325 {} |
| class C327 extends C326 {} |
| class C328 extends C327 {} |
| class C329 extends C328 {} |
| class C330 extends C329 {} |
| class C331 extends C330 {} |
| class C332 extends C331 {} |
| class C333 extends C332 {} |
| class C334 extends C333 {} |
| class C335 extends C334 {} |
| class C336 extends C335 {} |
| class C337 extends C336 {} |
| class C338 extends C337 {} |
| class C339 extends C338 {} |
| class C340 extends C339 {} |
| class C341 extends C340 {} |
| class C342 extends C341 {} |
| class C343 extends C342 {} |
| class C344 extends C343 {} |
| class C345 extends C344 {} |
| class C346 extends C345 {} |
| class C347 extends C346 {} |
| class C348 extends C347 {} |
| class C349 extends C348 {} |
| class C350 extends C349 {} |
| class C351 extends C350 {} |
| class C352 extends C351 {} |
| class C353 extends C352 {} |
| class C354 extends C353 {} |
| class C355 extends C354 {} |
| class C356 extends C355 {} |
| class C357 extends C356 {} |
| class C358 extends C357 {} |
| class C359 extends C358 {} |
| class C360 extends C359 {} |
| class C361 extends C360 {} |
| class C362 extends C361 {} |
| class C363 extends C362 {} |
| class C364 extends C363 {} |
| class C365 extends C364 {} |
| class C366 extends C365 {} |
| class C367 extends C366 {} |
| class C368 extends C367 {} |
| class C369 extends C368 {} |
| class C370 extends C369 {} |
| class C371 extends C370 {} |
| class C372 extends C371 {} |
| class C373 extends C372 {} |
| class C374 extends C373 {} |
| class C375 extends C374 {} |
| class C376 extends C375 {} |
| class C377 extends C376 {} |
| class C378 extends C377 {} |
| class C379 extends C378 {} |
| class C380 extends C379 {} |
| class C381 extends C380 {} |
| class C382 extends C381 {} |
| class C383 extends C382 {} |
| class C384 extends C383 {} |
| class C385 extends C384 {} |
| class C386 extends C385 {} |
| class C387 extends C386 {} |
| class C388 extends C387 {} |
| class C389 extends C388 {} |
| class C390 extends C389 {} |
| class C391 extends C390 {} |
| class C392 extends C391 {} |
| class C393 extends C392 {} |
| class C394 extends C393 {} |
| class C395 extends C394 {} |
| class C396 extends C395 {} |
| class C397 extends C396 {} |
| class C398 extends C397 {} |
| class C399 extends C398 {} |
| class C400 extends C399 {} |
| class C401 extends C400 {} |
| class C402 extends C401 {} |
| class C403 extends C402 {} |
| class C404 extends C403 {} |
| class C405 extends C404 {} |
| class C406 extends C405 {} |
| class C407 extends C406 {} |
| class C408 extends C407 {} |
| class C409 extends C408 {} |
| class C410 extends C409 {} |
| class C411 extends C410 {} |
| class C412 extends C411 {} |
| class C413 extends C412 {} |
| class C414 extends C413 {} |
| class C415 extends C414 {} |
| class C416 extends C415 {} |
| class C417 extends C416 {} |
| class C418 extends C417 {} |
| class C419 extends C418 {} |
| class C420 extends C419 {} |
| class C421 extends C420 {} |
| class C422 extends C421 {} |
| class C423 extends C422 {} |
| class C424 extends C423 {} |
| class C425 extends C424 {} |
| class C426 extends C425 {} |
| class C427 extends C426 {} |
| class C428 extends C427 {} |
| class C429 extends C428 {} |
| class C430 extends C429 {} |
| class C431 extends C430 {} |
| class C432 extends C431 {} |
| class C433 extends C432 {} |
| class C434 extends C433 {} |
| class C435 extends C434 {} |
| class C436 extends C435 {} |
| class C437 extends C436 {} |
| class C438 extends C437 {} |
| class C439 extends C438 {} |
| class C440 extends C439 {} |
| class C441 extends C440 {} |
| class C442 extends C441 {} |
| class C443 extends C442 {} |
| class C444 extends C443 {} |
| class C445 extends C444 {} |
| class C446 extends C445 {} |
| class C447 extends C446 {} |
| class C448 extends C447 {} |
| class C449 extends C448 {} |
| class C450 extends C449 {} |
| class C451 extends C450 {} |
| class C452 extends C451 {} |
| class C453 extends C452 {} |
| class C454 extends C453 {} |
| class C455 extends C454 {} |
| class C456 extends C455 {} |
| class C457 extends C456 {} |
| class C458 extends C457 {} |
| class C459 extends C458 {} |
| class C460 extends C459 {} |
| class C461 extends C460 {} |
| class C462 extends C461 {} |
| class C463 extends C462 {} |
| class C464 extends C463 {} |
| class C465 extends C464 {} |
| class C466 extends C465 {} |
| class C467 extends C466 {} |
| class C468 extends C467 {} |
| class C469 extends C468 {} |
| class C470 extends C469 {} |
| class C471 extends C470 {} |
| class C472 extends C471 {} |
| class C473 extends C472 {} |
| class C474 extends C473 {} |
| class C475 extends C474 {} |
| class C476 extends C475 {} |
| class C477 extends C476 {} |
| class C478 extends C477 {} |
| class C479 extends C478 {} |
| class C480 extends C479 {} |
| class C481 extends C480 {} |
| class C482 extends C481 {} |
| class C483 extends C482 {} |
| class C484 extends C483 {} |
| class C485 extends C484 {} |
| class C486 extends C485 {} |
| class C487 extends C486 {} |
| class C488 extends C487 {} |
| class C489 extends C488 {} |
| class C490 extends C489 {} |
| class C491 extends C490 {} |
| class C492 extends C491 {} |
| class C493 extends C492 {} |
| class C494 extends C493 {} |
| class C495 extends C494 {} |
| class C496 extends C495 {} |
| class C497 extends C496 {} |
| class C498 extends C497 {} |
| class C499 extends C498 {} |
| class C500 extends C499 {} |