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

import "package:expect/expect.dart";

import 'dart:mirrors';

main() {
  var cls = reflectClass(List);
  Expect.throwsArgumentError(() => cls.newInstance(Symbol.empty, [null]));

  var list = cls.newInstance(Symbol.empty, [42]).reflectee;
  // Check that the list is fixed.
  Expect.equals(42, list.length);
  Expect.throwsUnsupportedError(() => list.add(2));
  list[0] = 1;
  Expect.equals(1, list[0]);

  testGrowableList(); //# 01: ok
}

testGrowableList() {
  var cls = reflectClass(List);
  var list = cls.newInstance(Symbol.empty, []).reflectee;
  // Check that the list is growable.
  Expect.equals(0, list.length);
  list.add(42);
  Expect.equals(1, list.length);
}
