// Copyright (c) 2018, 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.

// @dart = 2.9

// Verify that optimizing compiler does not perform an illegal code motion
// past CheckNull instruction.

import "package:expect/expect.dart";

class C {
  final String padding = "";
  final String field = "1"; // Note: need padding to hit an object header
  // of the next object after [null] object when
  // doing illegal null.field read. Need to hit
  // object header to cause crash.
}

int foofoo(C p) {
  int sum = 0;
  for (var i = 0; i < 10; i++) {
    // Note: need redundant instructions in the loop to trigger Canonicalize
    // after CSE. Canonicalize then would illegally remove the Redefinition.
    sum += p.field.length;
    sum += p.field.length;
  }
  return sum;
}

void main() {
  Expect.equals(20, foofoo(new C()));
  Expect.throwsNoSuchMethodError(() => foofoo(null));
}
