| // Copyright (c) 2017, 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. |
| |
| /*cfe.library: nnbd=false*/ |
| /*cfe:nnbd.library: nnbd=true*/ |
| |
| class Class<T> { |
| var property; |
| |
| method(T o) { |
| if (/*cfe.T*/ /*cfe:nnbd.T%*/ o is Class) { |
| /*cfe.T & Class<dynamic>*/ |
| /*cfe:nnbd.T! & Class<dynamic>!*/ |
| o. /*invoke: dynamic*/ method(/*Null*/ null); |
| /*cfe.T & Class<dynamic>|dynamic*/ /*cfe:nnbd.T! & Class<dynamic>!|dynamic*/ o |
| ?. /*invoke: dynamic*/ method(/*Null*/ null); |
| /*cfe.T & Class<dynamic>|dynamic*/ /*cfe:nnbd.T! & Class<dynamic>!|dynamic*/ o |
| ?. /*dynamic*/ property; |
| } |
| } |
| } |
| |
| method<T>(T o) { |
| if (/*cfe.T*/ /*cfe:nnbd.T%*/ o is Class) { |
| /*cfe.T & Class<dynamic>*/ |
| /*cfe:nnbd.T! & Class<dynamic>!*/ |
| o. /*invoke: dynamic*/ method(/*Null*/ null); |
| /*cfe.T & Class<dynamic>|dynamic*/ /*cfe:nnbd.T! & Class<dynamic>!|dynamic*/ o |
| ?. /*invoke: dynamic*/ method(/*Null*/ null); |
| /*cfe.T & Class<dynamic>|dynamic*/ /*cfe:nnbd.T! & Class<dynamic>!|dynamic*/ o |
| ?. /*dynamic*/ property; |
| } |
| } |
| |
| main() { |
| var c = new |
| /*cfe.Class<dynamic>*/ |
| /*cfe:nnbd.Class<dynamic>!*/ |
| Class/*<dynamic>*/(); |
| /*cfe.Class<dynamic>*/ /*cfe:nnbd.Class<dynamic>!*/ c |
| . /*invoke: dynamic*/ method( |
| /*cfe.Class<dynamic>*/ /*cfe:nnbd.Class<dynamic>!*/ c); |
| /*invoke: dynamic*/ method |
| /*cfe.<Class<dynamic>>*/ /*cfe:nnbd.<Class<dynamic>!>*/ ( |
| /*cfe.Class<dynamic>*/ /*cfe:nnbd.Class<dynamic>!*/ c); |
| } |