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

// Verify that instance creation expressions inside function
// annotations are properly handled.  See dartbug.com/23354

import 'dart:mirrors';
import 'package:expect/expect.dart';

class C {
  final String s;
  const C(this.s);
}

class D {
  final C c;
  const D(this.c);
}

@D(const C('foo'))
f() {}

main() {
  ClosureMirror closureMirror = reflect(f) as ClosureMirror;
  List<InstanceMirror> metadata = closureMirror.function.metadata;
  Expect.equals(1, metadata.length);
  Expect.equals(metadata[0].reflectee.c.s, 'foo');
}
