// Copyright (c) 2011, 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.
// Check that initializers are not duplicated

// @dart = 2.9

 class Class {
   Class(var v) : field_ = v
   // Test against duplicate final field initialization in initializing list.
    , field_ = 2
    //^^^^^^
    // [analyzer] COMPILE_TIME_ERROR.FIELD_INITIALIZED_BY_MULTIPLE_INITIALIZERS
    //       ^
    // [cfe] 'field_' was already initialized by this constructor.
   ;
   Class.field(this.field_)
   // Test against duplicate final field initialization between initializing
   // formals and initializer list.
    : field_ = 2
    //^^^^^^
    // [analyzer] COMPILE_TIME_ERROR.FIELD_INITIALIZED_IN_PARAMETER_AND_INITIALIZER
    //       ^
    // [cfe] 'field_' was already initialized by this constructor.
   ;
   // Test against duplicate final field initialization in initializing formals.
   Class.two_fields(this.field_
    , this.field_
    //     ^^^^^^
    // [analyzer] COMPILE_TIME_ERROR.FINAL_INITIALIZED_MULTIPLE_TIMES
    // [cfe] 'field_' was already initialized by this constructor.
    //     ^
    // [cfe] Duplicated parameter name 'field_'.
       );
   final field_;
 }

 main() {
   new Class(42);
   new Class.field(42);
   new Class.two_fields(42
     , 42
       );
 }
