| // Copyright (c) 2019, 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*/ |
| |
| num numTopLevel = /*cfe.int*/ /*cfe:nnbd.int!*/ 0; |
| int intTopLevel = /*cfe.int*/ /*cfe:nnbd.int!*/ 0; |
| dynamic dynamicTopLevel = /*cfe.int*/ /*cfe:nnbd.int!*/ 0; |
| |
| testTopLevel() { |
| /*cfe.update: num*/ |
| /*cfe:nnbd.update: num!*/ |
| /*cfe.num*/ |
| /*cfe:nnbd.num!*/ |
| numTopLevel |
| /*cfe.invoke: num*/ |
| /*cfe:nnbd.invoke: num!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| ++; |
| |
| /*cfe.update: num*/ |
| /*cfe:nnbd.update: num!*/ |
| /*cfe.num*/ |
| /*cfe:nnbd.num!*/ |
| numTopLevel |
| /*cfe.invoke: num*/ |
| /*cfe:nnbd.invoke: num!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| --; |
| |
| /*cfe.invoke: num*/ |
| /*cfe:nnbd.invoke: num!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| ++ |
| /*cfe.update: num*/ |
| /*cfe:nnbd.update: num!*/ |
| /*cfe.num*/ |
| /*cfe:nnbd.num!*/ |
| numTopLevel; |
| |
| /*cfe.invoke: num*/ |
| /*cfe:nnbd.invoke: num!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| -- |
| /*cfe.update: num*/ |
| /*cfe:nnbd.update: num!*/ |
| /*cfe.num*/ |
| /*cfe:nnbd.num!*/ |
| numTopLevel; |
| |
| /*cfe.update: int*/ |
| /*cfe:nnbd.update: int!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| intTopLevel |
| /*cfe.invoke: int*/ |
| /*cfe:nnbd.invoke: int!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| ++; |
| |
| /*cfe.update: int*/ |
| /*cfe:nnbd.update: int!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| intTopLevel |
| /*cfe.invoke: int*/ |
| /*cfe:nnbd.invoke: int!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| --; |
| |
| /*cfe.invoke: int*/ |
| /*cfe:nnbd.invoke: int!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| ++ |
| /*cfe.update: int*/ |
| /*cfe:nnbd.update: int!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| intTopLevel; |
| |
| /*cfe.invoke: int*/ |
| /*cfe:nnbd.invoke: int!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| -- |
| /*cfe.update: int*/ |
| /*cfe:nnbd.update: int!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| intTopLevel; |
| |
| /*update: dynamic*/ /*dynamic*/ dynamicTopLevel |
| /*invoke: dynamic*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| ++; |
| |
| /*update: dynamic*/ /*dynamic*/ dynamicTopLevel |
| /*invoke: dynamic*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| --; |
| |
| /*invoke: dynamic*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| ++ |
| /*update: dynamic*/ /*dynamic*/ dynamicTopLevel; |
| |
| /*invoke: dynamic*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| -- |
| /*update: dynamic*/ /*dynamic*/ dynamicTopLevel; |
| } |
| |
| class Class { |
| num numInstance = /*cfe.int*/ /*cfe:nnbd.int!*/ 0; |
| int intInstance = /*cfe.int*/ /*cfe:nnbd.int!*/ 0; |
| dynamic dynamicInstance = /*cfe.int*/ /*cfe:nnbd.int!*/ 0; |
| |
| testInstance() { |
| /*cfe.update: num*/ |
| /*cfe:nnbd.update: num!*/ |
| /*cfe.num*/ |
| /*cfe:nnbd.num!*/ |
| numInstance |
| /*cfe.invoke: num*/ |
| /*cfe:nnbd.invoke: num!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| ++; |
| |
| /*cfe.update: num*/ |
| /*cfe:nnbd.update: num!*/ |
| /*cfe.num*/ |
| /*cfe:nnbd.num!*/ |
| numInstance |
| /*cfe.invoke: num*/ |
| /*cfe:nnbd.invoke: num!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| --; |
| |
| /*cfe.invoke: num*/ |
| /*cfe:nnbd.invoke: num!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| ++ |
| /*cfe.update: num*/ |
| /*cfe:nnbd.update: num!*/ |
| /*cfe.num*/ |
| /*cfe:nnbd.num!*/ |
| numInstance; |
| |
| /*cfe.invoke: num*/ |
| /*cfe:nnbd.invoke: num!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| -- |
| /*cfe.update: num*/ |
| /*cfe:nnbd.update: num!*/ |
| /*cfe.num*/ |
| /*cfe:nnbd.num!*/ |
| numInstance; |
| |
| /*cfe.update: int*/ |
| /*cfe:nnbd.update: int!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| intInstance |
| /*cfe.invoke: int*/ |
| /*cfe:nnbd.invoke: int!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| ++; |
| |
| /*cfe.update: int*/ |
| /*cfe:nnbd.update: int!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| intInstance |
| /*cfe.invoke: int*/ |
| /*cfe:nnbd.invoke: int!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| --; |
| |
| /*cfe.invoke: int*/ |
| /*cfe:nnbd.invoke: int!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| ++ |
| /*cfe.update: int*/ |
| /*cfe:nnbd.update: int!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| intInstance; |
| |
| /*cfe.invoke: int*/ |
| /*cfe:nnbd.invoke: int!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| -- |
| /*cfe.update: int*/ |
| /*cfe:nnbd.update: int!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| intInstance; |
| |
| /*update: dynamic*/ /*dynamic*/ dynamicInstance |
| /*invoke: dynamic*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| ++; |
| /*update: dynamic*/ /*dynamic*/ dynamicInstance |
| /*invoke: dynamic*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| --; |
| /*invoke: dynamic*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| ++ |
| /*update: dynamic*/ /*dynamic*/ dynamicInstance; |
| /*invoke: dynamic*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| -- |
| /*update: dynamic*/ /*dynamic*/ dynamicInstance; |
| } |
| } |
| |
| testInstanceOnClass(Class c) { |
| /*cfe.Class*/ |
| /*cfe:nnbd.Class!*/ |
| c. /*cfe.update: num*/ |
| /*cfe:nnbd.update: num!*/ |
| /*cfe.num*/ |
| /*cfe:nnbd.num!*/ |
| numInstance |
| /*cfe.invoke: num*/ |
| /*cfe:nnbd.invoke: num!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| ++; |
| |
| /*cfe.Class*/ |
| /*cfe:nnbd.Class!*/ |
| c. /*cfe.update: num*/ |
| /*cfe:nnbd.update: num!*/ |
| /*cfe.num*/ |
| /*cfe:nnbd.num!*/ |
| numInstance |
| /*cfe.invoke: num*/ |
| /*cfe:nnbd.invoke: num!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| --; |
| |
| /*cfe.invoke: num*/ |
| /*cfe:nnbd.invoke: num!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| ++ |
| /*cfe.Class*/ |
| /*cfe:nnbd.Class!*/ |
| c. /*cfe.update: num*/ |
| /*cfe:nnbd.update: num!*/ |
| /*cfe.num*/ |
| /*cfe:nnbd.num!*/ |
| numInstance; |
| /*cfe.invoke: num*/ |
| /*cfe:nnbd.invoke: num!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| -- |
| /*cfe.Class*/ |
| /*cfe:nnbd.Class!*/ |
| c. /*cfe.update: num*/ |
| /*cfe:nnbd.update: num!*/ |
| /*cfe.num*/ |
| /*cfe:nnbd.num!*/ |
| numInstance; |
| |
| /*cfe.Class*/ |
| /*cfe:nnbd.Class!*/ |
| c. |
| /*cfe.update: int*/ |
| /*cfe:nnbd.update: int!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| intInstance |
| /*cfe.invoke: int*/ |
| /*cfe:nnbd.invoke: int!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| ++; |
| |
| /*cfe.Class*/ |
| /*cfe:nnbd.Class!*/ |
| c. |
| /*cfe.update: int*/ |
| /*cfe:nnbd.update: int!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| intInstance |
| /*cfe.invoke: int*/ |
| /*cfe:nnbd.invoke: int!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| --; |
| |
| /*cfe.invoke: int*/ |
| /*cfe:nnbd.invoke: int!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| ++ |
| /*cfe.Class*/ |
| /*cfe:nnbd.Class!*/ |
| c. |
| /*cfe.update: int*/ |
| /*cfe:nnbd.update: int!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| intInstance; |
| |
| /*cfe.invoke: int*/ |
| /*cfe:nnbd.invoke: int!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| -- |
| /*cfe.Class*/ |
| /*cfe:nnbd.Class!*/ |
| c. |
| /*cfe.update: int*/ |
| /*cfe:nnbd.update: int!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| intInstance; |
| |
| /*cfe.Class*/ |
| /*cfe:nnbd.Class!*/ |
| c. /*update: dynamic*/ /*dynamic*/ dynamicInstance |
| /*invoke: dynamic*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| ++; |
| |
| /*cfe.Class*/ |
| /*cfe:nnbd.Class!*/ |
| c. /*update: dynamic*/ /*dynamic*/ dynamicInstance |
| /*invoke: dynamic*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| --; |
| |
| /*invoke: dynamic*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| ++ |
| /*cfe.Class*/ |
| /*cfe:nnbd.Class!*/ |
| c. /*update: dynamic*/ /*dynamic*/ dynamicInstance; |
| |
| /*invoke: dynamic*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| -- |
| /*cfe.Class*/ |
| /*cfe:nnbd.Class!*/ |
| c. /*update: dynamic*/ /*dynamic*/ dynamicInstance; |
| } |
| |
| testInstanceOnDynamic(dynamic c) { |
| /*dynamic*/ c. |
| /*update: dynamic*/ /*dynamic*/ numInstance |
| /*invoke: dynamic*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| ++; |
| |
| /*dynamic*/ c. |
| /*update: dynamic*/ /*dynamic*/ numInstance |
| /*invoke: dynamic*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| --; |
| |
| /*invoke: dynamic*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| ++ |
| /*dynamic*/ c. |
| /*update: dynamic*/ /*dynamic*/ numInstance; |
| |
| /*invoke: dynamic*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| -- |
| /*dynamic*/ c. |
| /*update: dynamic*/ /*dynamic*/ numInstance; |
| |
| /*dynamic*/ c. |
| /*update: dynamic*/ /*dynamic*/ intInstance |
| /*invoke: dynamic*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| ++; |
| |
| /*dynamic*/ c. |
| /*update: dynamic*/ /*dynamic*/ intInstance |
| /*invoke: dynamic*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| --; |
| |
| /*invoke: dynamic*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| ++ |
| /*dynamic*/ c. |
| /*update: dynamic*/ /*dynamic*/ intInstance; |
| |
| /*invoke: dynamic*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| -- |
| /*dynamic*/ c. |
| /*update: dynamic*/ /*dynamic*/ intInstance; |
| |
| /*dynamic*/ c. |
| /*update: dynamic*/ /*dynamic*/ dynamicInstance |
| /*invoke: dynamic*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| ++; |
| |
| /*dynamic*/ c. |
| /*update: dynamic*/ /*dynamic*/ dynamicInstance |
| /*invoke: dynamic*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| --; |
| |
| /*invoke: dynamic*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| ++ |
| /*dynamic*/ c. |
| /*update: dynamic*/ /*dynamic*/ dynamicInstance; |
| |
| /*invoke: dynamic*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| -- |
| /*dynamic*/ c. |
| /*update: dynamic*/ /*dynamic*/ dynamicInstance; |
| } |
| |
| main() { |
| /// ignore: unused_local_variable |
| num numLocal = /*cfe.int*/ /*cfe:nnbd.int!*/ 0; |
| |
| /// ignore: unused_local_variable |
| int intLocal = /*cfe.int*/ /*cfe:nnbd.int!*/ 0; |
| |
| /// ignore: unused_local_variable |
| dynamic dynamicLocal = /*cfe.int*/ /*cfe:nnbd.int!*/ 0; |
| |
| /*cfe.update: num*/ |
| /*cfe:nnbd.update: num!*/ |
| /*cfe.num*/ |
| /*cfe:nnbd.num!*/ |
| numLocal |
| /*cfe.invoke: num*/ |
| /*cfe:nnbd.invoke: num!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| ++; |
| |
| /*cfe.update: num*/ |
| /*cfe:nnbd.update: num!*/ |
| /*cfe.num*/ |
| /*cfe:nnbd.num!*/ |
| numLocal |
| /*cfe.invoke: num*/ |
| /*cfe:nnbd.invoke: num!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| --; |
| |
| /*cfe.invoke: num*/ |
| /*cfe:nnbd.invoke: num!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| ++ |
| /*cfe.update: num*/ |
| /*cfe:nnbd.update: num!*/ |
| /*cfe.num*/ |
| /*cfe:nnbd.num!*/ |
| numLocal; |
| |
| /*cfe.invoke: num*/ |
| /*cfe:nnbd.invoke: num!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| -- |
| /*cfe.update: num*/ |
| /*cfe:nnbd.update: num!*/ |
| /*cfe.num*/ |
| /*cfe:nnbd.num!*/ |
| numLocal; |
| |
| /*cfe.update: int*/ |
| /*cfe:nnbd.update: int!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| intLocal |
| /*cfe.invoke: int*/ |
| /*cfe:nnbd.invoke: int!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| ++; |
| |
| /*cfe.update: int*/ |
| /*cfe:nnbd.update: int!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| intLocal |
| /*cfe.invoke: int*/ |
| /*cfe:nnbd.invoke: int!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| --; |
| |
| /*cfe.invoke: int*/ |
| /*cfe:nnbd.invoke: int!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| ++ |
| /*cfe.update: int*/ |
| /*cfe:nnbd.update: int!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| intLocal; |
| |
| /*cfe.invoke: int*/ |
| /*cfe:nnbd.invoke: int!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| -- |
| /*cfe.update: int*/ |
| /*cfe:nnbd.update: int!*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| intLocal; |
| |
| /*update: dynamic*/ /*dynamic*/ dynamicLocal |
| /*invoke: dynamic*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| ++; |
| |
| /*update: dynamic*/ /*dynamic*/ dynamicLocal |
| /*invoke: dynamic*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| --; |
| |
| /*invoke: dynamic*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| ++ |
| /*update: dynamic*/ /*dynamic*/ dynamicLocal; |
| |
| /*invoke: dynamic*/ |
| /*cfe.int*/ |
| /*cfe:nnbd.int!*/ |
| -- |
| /*update: dynamic*/ /*dynamic*/ dynamicLocal; |
| } |