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

class Foo(val tag: String) {
  var bar: Bar? = null

  fun foo() {
    println("Foo::$tag")
  }
}

class Bar(var bar1: String?, var bar2: String?, var bar3: String?) {
  constructor() : this(null, null, null)

  fun bar() {
    println("Bar::$bar1::$bar2::$bar3")
  }
}

fun neverThrowNPE(a: Foo?) {
  if (a != null) {
    a!!.foo()
    a.bar?.bar1 = a.tag + "$1"
    a.bar?.bar2 = a.tag + "$2"
    a.bar?.bar3 = a.tag + "$3"
    a.bar?.bar()
  } else {
    println("-null-")
  }
}

fun main(args: Array<String>) {
  val foo = Foo("tag")
  neverThrowNPE(foo)
  foo.bar = Bar()
  neverThrowNPE(foo)
  neverThrowNPE(null)
}
