// 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.

// @dart = 2.9

class Foo {
  Foo(this.x);
  //       ^
  // [analyzer] COMPILE_TIME_ERROR.FINAL_INITIALIZED_IN_DECLARATION_AND_CONSTRUCTOR
  // [cfe] 'x' is a final instance variable that was initialized at the declaration.
  final int x = 42;
}

class CoffeeShop {
  final String shopName = "Coffee Lab";
  CoffeeShop.name(String shopName)
      : this.shopName = shopName;
      //     ^^^^^^^^
      // [analyzer] COMPILE_TIME_ERROR.FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION
      //              ^
      // [cfe] 'shopName' is a final instance variable that was initialized at the declaration.
}

void main() {
  Foo f = new Foo(10);
  CoffeeShop presidentialCoffee =
      new CoffeeShop.name("Covfefe Lab");
}
