// 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 = /*int*/ 0;
int intTopLevel = /*int*/ 0;
dynamic dynamicTopLevel = /*int*/ 0;

testTopLevel() {
  /*cfe|dart2js.update: num*/
  /*cfe:nnbd.update: num!*/
  /*cfe|dart2js.num*/
  /*cfe:nnbd.num!*/
  numTopLevel /*cfe|dart2js.invoke: num*/ /*cfe:nnbd.invoke: num!*/ /*int*/ ++;

  /*cfe|dart2js.update: num*/
  /*cfe:nnbd.update: num!*/
  /*cfe|dart2js.num*/
  /*cfe:nnbd.num!*/
  numTopLevel /*cfe|dart2js.invoke: num*/ /*cfe:nnbd.invoke: num!*/ /*int*/ --;

  /*cfe|dart2js.invoke: num*/ /*cfe:nnbd.invoke: num!*/ /*int*/ ++
      /*cfe|dart2js.update: num*/
      /*cfe:nnbd.update: num!*/
      /*cfe|dart2js.num*/
      /*cfe:nnbd.num!*/
      numTopLevel;

  /*cfe|dart2js.invoke: num*/ /*cfe:nnbd.invoke: num!*/ /*int*/ --
      /*cfe|dart2js.update: num*/
      /*cfe:nnbd.update: num!*/
      /*cfe|dart2js.num*/
      /*cfe:nnbd.num!*/
      numTopLevel;

  /*cfe|dart2js.update: int*/
  /*cfe:nnbd.update: int!*/
  /*cfe|dart2js.int*/
  /*cfe:nnbd.int!*/
  intTopLevel
      /*cfe|dart2js.invoke: int*/
      /*cfe:nnbd.invoke: int!*/
      /*int*/ ++;

  /*cfe|dart2js.update: int*/
  /*cfe:nnbd.update: int!*/
  /*cfe|dart2js.int*/
  /*cfe:nnbd.int!*/
  intTopLevel
      /*cfe|dart2js.invoke: int*/
      /*cfe:nnbd.invoke: int!*/
      /*int*/ --;

  /*cfe|dart2js.invoke: int*/
  /*cfe:nnbd.invoke: int!*/
  /*int*/ ++
      /*cfe|dart2js.update: int*/
      /*cfe:nnbd.update: int!*/
      /*cfe|dart2js.int*/
      /*cfe:nnbd.int!*/
      intTopLevel;

  /*cfe|dart2js.invoke: int*/
  /*cfe:nnbd.invoke: int!*/
  /*int*/ --
      /*cfe|dart2js.update: int*/
      /*cfe:nnbd.update: int!*/
      /*cfe|dart2js.int*/
      /*cfe:nnbd.int!*/
      intTopLevel;

  /*update: dynamic*/ /*dynamic*/ dynamicTopLevel
      /*invoke: dynamic*/ /*int*/ ++;

  /*update: dynamic*/ /*dynamic*/ dynamicTopLevel
      /*invoke: dynamic*/ /*int*/ --;

  /*invoke: dynamic*/ /*int*/ ++
      /*update: dynamic*/ /*dynamic*/ dynamicTopLevel;

  /*invoke: dynamic*/ /*int*/ --
      /*update: dynamic*/ /*dynamic*/ dynamicTopLevel;
}

class Class {
  num numInstance = /*int*/ 0;
  int intInstance = /*int*/ 0;
  dynamic dynamicInstance = /*int*/ 0;

  testInstance() {
    /*cfe|dart2js.update: num*/
    /*cfe:nnbd.update: num!*/
    /*cfe|dart2js.num*/
    /*cfe:nnbd.num!*/
    numInstance
        /*cfe|dart2js.invoke: num*/
        /*cfe:nnbd.invoke: num!*/
        /*int*/ ++;

    /*cfe|dart2js.update: num*/
    /*cfe:nnbd.update: num!*/
    /*cfe|dart2js.num*/
    /*cfe:nnbd.num!*/
    numInstance
        /*cfe|dart2js.invoke: num*/
        /*cfe:nnbd.invoke: num!*/
        /*int*/ --;

    /*cfe|dart2js.invoke: num*/ /*cfe:nnbd.invoke: num!*/ /*int*/ ++
        /*cfe|dart2js.update: num*/
        /*cfe:nnbd.update: num!*/
        /*cfe|dart2js.num*/
        /*cfe:nnbd.num!*/
        numInstance;

    /*cfe|dart2js.invoke: num*/ /*cfe:nnbd.invoke: num!*/ /*int*/ --
        /*cfe|dart2js.update: num*/
        /*cfe:nnbd.update: num!*/
        /*cfe|dart2js.num*/
        /*cfe:nnbd.num!*/
        numInstance;

    /*cfe|dart2js.update: int*/
    /*cfe:nnbd.update: int!*/
    /*cfe|dart2js.int*/
    /*cfe:nnbd.int!*/
    intInstance
        /*cfe|dart2js.invoke: int*/
        /*cfe:nnbd.invoke: int!*/
        /*int*/ ++;

    /*cfe|dart2js.update: int*/
    /*cfe:nnbd.update: int!*/
    /*cfe|dart2js.int*/
    /*cfe:nnbd.int!*/
    intInstance
        /*cfe|dart2js.invoke: int*/
        /*cfe:nnbd.invoke: int!*/
        /*int*/ --;

    /*cfe|dart2js.invoke: int*/
    /*cfe:nnbd.invoke: int!*/
    /*int*/ ++
        /*cfe|dart2js.update: int*/
        /*cfe:nnbd.update: int!*/
        /*cfe|dart2js.int*/
        /*cfe:nnbd.int!*/
        intInstance;

    /*cfe|dart2js.invoke: int*/
    /*cfe:nnbd.invoke: int!*/
    /*int*/ --
        /*cfe|dart2js.update: int*/
        /*cfe:nnbd.update: int!*/
        /*cfe|dart2js.int*/
        /*cfe:nnbd.int!*/
        intInstance;

    /*update: dynamic*/ /*dynamic*/ dynamicInstance
        /*invoke: dynamic*/ /*int*/ ++;
    /*update: dynamic*/ /*dynamic*/ dynamicInstance
        /*invoke: dynamic*/ /*int*/ --;
    /*invoke: dynamic*/ /*int*/ ++
        /*update: dynamic*/ /*dynamic*/ dynamicInstance;
    /*invoke: dynamic*/ /*int*/ --
        /*update: dynamic*/ /*dynamic*/ dynamicInstance;
  }
}

testInstanceOnClass(Class c) {
  /*cfe|dart2js.Class*/
  /*cfe:nnbd.Class!*/
  c. /*cfe|dart2js.update: num*/ /*cfe:nnbd.update: num!*/
          /*cfe|dart2js.num*/
          /*cfe:nnbd.num!*/
          numInstance
      /*cfe|dart2js.invoke: num*/
      /*cfe:nnbd.invoke: num!*/
      /*int*/ ++;
  /*cfe|dart2js.Class*/
  /*cfe:nnbd.Class!*/
  c. /*cfe|dart2js.update: num*/ /*cfe:nnbd.update: num!*/
          /*cfe|dart2js.num*/
          /*cfe:nnbd.num!*/
          numInstance
      /*cfe|dart2js.invoke: num*/
      /*cfe:nnbd.invoke: num!*/
      /*int*/ --;
  /*cfe|dart2js.invoke: num*/ /*cfe:nnbd.invoke: num!*/ /*int*/ ++
      /*cfe|dart2js.Class*/
      /*cfe:nnbd.Class!*/
      c. /*cfe|dart2js.update: num*/ /*cfe:nnbd.update: num!*/
          /*cfe|dart2js.num*/
          /*cfe:nnbd.num!*/
          numInstance;
  /*cfe|dart2js.invoke: num*/ /*cfe:nnbd.invoke: num!*/ /*int*/ --
      /*cfe|dart2js.Class*/
      /*cfe:nnbd.Class!*/
      c. /*cfe|dart2js.update: num*/ /*cfe:nnbd.update: num!*/
          /*cfe|dart2js.num*/
          /*cfe:nnbd.num!*/
          numInstance;

  /*cfe|dart2js.Class*/
  /*cfe:nnbd.Class!*/
  c.
          /*cfe|dart2js.update: int*/
          /*cfe:nnbd.update: int!*/
          /*cfe|dart2js.int*/
          /*cfe:nnbd.int!*/
          intInstance
      /*cfe|dart2js.invoke: int*/
      /*cfe:nnbd.invoke: int!*/
      /*int*/ ++;

  /*cfe|dart2js.Class*/
  /*cfe:nnbd.Class!*/
  c.
          /*cfe|dart2js.update: int*/
          /*cfe:nnbd.update: int!*/
          /*cfe|dart2js.int*/
          /*cfe:nnbd.int!*/
          intInstance
      /*cfe|dart2js.invoke: int*/
      /*cfe:nnbd.invoke: int!*/
      /*int*/ --;

  /*cfe|dart2js.invoke: int*/
  /*cfe:nnbd.invoke: int!*/
  /*int*/ ++
      /*cfe|dart2js.Class*/
      /*cfe:nnbd.Class!*/
      c.
          /*cfe|dart2js.update: int*/
          /*cfe:nnbd.update: int!*/
          /*cfe|dart2js.int*/
          /*cfe:nnbd.int!*/
          intInstance;

  /*cfe|dart2js.invoke: int*/
  /*cfe:nnbd.invoke: int!*/
  /*int*/ --
      /*cfe|dart2js.Class*/
      /*cfe:nnbd.Class!*/
      c.
          /*cfe|dart2js.update: int*/
          /*cfe:nnbd.update: int!*/
          /*cfe|dart2js.int*/
          /*cfe:nnbd.int!*/
          intInstance;

  /*cfe|dart2js.Class*/
  /*cfe:nnbd.Class!*/
  c. /*update: dynamic*/ /*dynamic*/ dynamicInstance
      /*invoke: dynamic*/ /*int*/ ++;

  /*cfe|dart2js.Class*/
  /*cfe:nnbd.Class!*/
  c. /*update: dynamic*/ /*dynamic*/ dynamicInstance
      /*invoke: dynamic*/ /*int*/ --;

  /*invoke: dynamic*/ /*int*/ ++
      /*cfe|dart2js.Class*/
      /*cfe:nnbd.Class!*/
      c. /*update: dynamic*/ /*dynamic*/ dynamicInstance;

  /*invoke: dynamic*/ /*int*/ --
      /*cfe|dart2js.Class*/
      /*cfe:nnbd.Class!*/
      c. /*update: dynamic*/ /*dynamic*/ dynamicInstance;
}

testInstanceOnDynamic(dynamic c) {
  /*dynamic*/ c. /*update: dynamic*/ /*dynamic*/ numInstance
      /*invoke: dynamic*/ /*int*/ ++;
  /*dynamic*/ c. /*update: dynamic*/ /*dynamic*/ numInstance
      /*invoke: dynamic*/ /*int*/ --;
  /*invoke: dynamic*/ /*int*/ ++ /*dynamic*/ c
      . /*update: dynamic*/ /*dynamic*/ numInstance;
  /*invoke: dynamic*/ /*int*/ -- /*dynamic*/ c
      . /*update: dynamic*/ /*dynamic*/ numInstance;

  /*dynamic*/ c. /*update: dynamic*/ /*dynamic*/ intInstance
      /*invoke: dynamic*/ /*int*/ ++;
  /*dynamic*/ c. /*update: dynamic*/ /*dynamic*/ intInstance
      /*invoke: dynamic*/ /*int*/ --;
  /*invoke: dynamic*/ /*int*/ ++ /*dynamic*/ c
      . /*update: dynamic*/ /*dynamic*/ intInstance;
  /*invoke: dynamic*/ /*int*/ -- /*dynamic*/ c
      . /*update: dynamic*/ /*dynamic*/ intInstance;

  /*dynamic*/ c. /*update: dynamic*/ /*dynamic*/ dynamicInstance
      /*invoke: dynamic*/ /*int*/ ++;
  /*dynamic*/ c. /*update: dynamic*/ /*dynamic*/ dynamicInstance
      /*invoke: dynamic*/ /*int*/ --;
  /*invoke: dynamic*/ /*int*/ ++ /*dynamic*/ c
      . /*update: dynamic*/ /*dynamic*/ dynamicInstance;
  /*invoke: dynamic*/ /*int*/ -- /*dynamic*/ c
      . /*update: dynamic*/ /*dynamic*/ dynamicInstance;
}

main() {
  /// ignore: unused_local_variable
  num numLocal = /*int*/ 0;

  /// ignore: unused_local_variable
  int intLocal = /*int*/ 0;

  /// ignore: unused_local_variable
  dynamic dynamicLocal = /*int*/ 0;

  /*cfe|dart2js.update: num*/
  /*cfe:nnbd.update: num!*/
  /*cfe|dart2js.num*/
  /*cfe:nnbd.num!*/
  numLocal /*cfe|dart2js.invoke: num*/ /*cfe:nnbd.invoke: num!*/ /*int*/ ++;

  /*cfe|dart2js.update: num*/
  /*cfe:nnbd.update: num!*/
  /*cfe|dart2js.num*/
  /*cfe:nnbd.num!*/
  numLocal /*cfe|dart2js.invoke: num*/ /*cfe:nnbd.invoke: num!*/ /*int*/ --;

  /*cfe|dart2js.invoke: num*/ /*cfe:nnbd.invoke: num!*/ /*int*/ ++
      /*cfe|dart2js.update: num*/
      /*cfe:nnbd.update: num!*/
      /*cfe|dart2js.num*/
      /*cfe:nnbd.num!*/
      numLocal;

  /*cfe|dart2js.invoke: num*/ /*cfe:nnbd.invoke: num!*/ /*int*/ --
      /*cfe|dart2js.update: num*/
      /*cfe:nnbd.update: num!*/
      /*cfe|dart2js.num*/
      /*cfe:nnbd.num!*/
      numLocal;

  /*cfe|dart2js.update: int*/
  /*cfe:nnbd.update: int!*/
  /*cfe|dart2js.int*/
  /*cfe:nnbd.int!*/
  intLocal
      /*cfe|dart2js.invoke: int*/
      /*cfe:nnbd.invoke: int!*/
      /*int*/ ++;

  /*cfe|dart2js.update: int*/
  /*cfe:nnbd.update: int!*/
  /*cfe|dart2js.int*/
  /*cfe:nnbd.int!*/
  intLocal
      /*cfe|dart2js.invoke: int*/
      /*cfe:nnbd.invoke: int!*/
      /*int*/ --;

  /*cfe|dart2js.invoke: int*/
  /*cfe:nnbd.invoke: int!*/
  /*int*/ ++
      /*cfe|dart2js.update: int*/
      /*cfe:nnbd.update: int!*/
      /*cfe|dart2js.int*/
      /*cfe:nnbd.int!*/
      intLocal;

  /*cfe|dart2js.invoke: int*/
  /*cfe:nnbd.invoke: int!*/
  /*int*/ --
      /*cfe|dart2js.update: int*/
      /*cfe:nnbd.update: int!*/
      /*cfe|dart2js.int*/
      /*cfe:nnbd.int!*/
      intLocal;

  /*update: dynamic*/ /*dynamic*/ dynamicLocal /*invoke: dynamic*/ /*int*/ ++;

  /*update: dynamic*/ /*dynamic*/ dynamicLocal /*invoke: dynamic*/ /*int*/ --;

  /*invoke: dynamic*/ /*int*/ ++ /*update: dynamic*/ /*dynamic*/ dynamicLocal;

  /*invoke: dynamic*/ /*int*/ -- /*update: dynamic*/ /*dynamic*/ dynamicLocal;
}
