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

// @dart = 2.9

/// @assertion Metadata can appear before  ...  function ...
/// @description Check that metadata is allowed before setter
/// @author a.semenov@unipro.ru

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

class A {
  const A();
}

class B {
  @A() void set b(int value) {}
}

main() {
  var getterName = MirrorSystem .getSymbol('b=');
  MethodMirror bMirror =
    reflectClass(B).instanceMembers[getterName] as MethodMirror;
  Expect.equals('.A',
    MirrorSystem.getName(bMirror.metadata[0].type.qualifiedName));
}
