| Index: runtime/lib/mirrors.cc
|
| diff --git a/runtime/lib/mirrors.cc b/runtime/lib/mirrors.cc
|
| index d78234b4fed5b5dc75f0f7a32da26f503d2e788f..f99b1113658259fec22b122b3e10ebedccef4fdb 100644
|
| --- a/runtime/lib/mirrors.cc
|
| +++ b/runtime/lib/mirrors.cc
|
| @@ -819,70 +819,6 @@ DEFINE_NATIVE_ENTRY(Mirrors_makeLocalTypeMirror, 1) {
|
| }
|
|
|
|
|
| -DEFINE_NATIVE_ENTRY(Mirrors_instantiateGenericType, 2) {
|
| - GET_NON_NULL_NATIVE_ARGUMENT(AbstractType, type, arguments->NativeArgAt(0));
|
| - GET_NON_NULL_NATIVE_ARGUMENT(Array, args, arguments->NativeArgAt(1));
|
| -
|
| - ASSERT(type.HasResolvedTypeClass());
|
| - const Class& clz = Class::Handle(type.type_class());
|
| - if (!clz.IsGeneric()) {
|
| - const Array& error_args = Array::Handle(Array::New(3));
|
| - error_args.SetAt(0, type);
|
| - error_args.SetAt(1, String::Handle(String::New("key")));
|
| - error_args.SetAt(2, String::Handle(
|
| - String::New("Type must be a generic class or function.")));
|
| - Exceptions::ThrowByType(Exceptions::kArgumentValue, error_args);
|
| - UNREACHABLE();
|
| - }
|
| - if (clz.NumTypeParameters() != args.Length()) {
|
| - const Array& error_args = Array::Handle(Array::New(3));
|
| - error_args.SetAt(0, args);
|
| - error_args.SetAt(1, String::Handle(String::New("typeArguments")));
|
| - error_args.SetAt(2, String::Handle(
|
| - String::New("Number of type arguments does not match.")));
|
| - Exceptions::ThrowByType(Exceptions::kArgumentValue, error_args);
|
| - UNREACHABLE();
|
| - }
|
| -
|
| - intptr_t num_expected_type_arguments = args.Length();
|
| - TypeArguments& type_args_obj = TypeArguments::Handle();
|
| - type_args_obj ^= TypeArguments::New(num_expected_type_arguments);
|
| - AbstractType& type_arg = AbstractType::Handle();
|
| - Instance& instance = Instance::Handle();
|
| - for (intptr_t i = 0; i < args.Length(); i++) {
|
| - instance ^= args.At(i);
|
| - if (!instance.IsType()) {
|
| - const Array& error_args = Array::Handle(Array::New(3));
|
| - error_args.SetAt(0, args);
|
| - error_args.SetAt(1, String::Handle(String::New("typeArguments")));
|
| - error_args.SetAt(2, String::Handle(
|
| - String::New("Type arguments must be instances of Type.")));
|
| - Exceptions::ThrowByType(Exceptions::kArgumentValue, error_args);
|
| - UNREACHABLE();
|
| - }
|
| - type_arg ^= args.At(i);
|
| - type_args_obj.SetTypeAt(i, type_arg);
|
| - }
|
| -
|
| - Type& instantiated_type = Type::Handle(
|
| - Type::New(clz, type_args_obj, TokenPosition::kNoSource));
|
| - instantiated_type ^= ClassFinalizer::FinalizeType(
|
| - clz, instantiated_type, ClassFinalizer::kCanonicalize);
|
| - if (instantiated_type.IsMalbounded()) {
|
| - const LanguageError& type_error = LanguageError::Handle(
|
| - instantiated_type.error());
|
| - const Array& error_args = Array::Handle(Array::New(3));
|
| - error_args.SetAt(0, args);
|
| - error_args.SetAt(1, String::Handle(String::New("typeArguments")));
|
| - error_args.SetAt(2, String::Handle(type_error.FormatMessage()));
|
| - Exceptions::ThrowByType(Exceptions::kArgumentValue, error_args);
|
| - UNREACHABLE();
|
| - }
|
| -
|
| - return instantiated_type.raw();
|
| -}
|
| -
|
| -
|
| DEFINE_NATIVE_ENTRY(Mirrors_mangleName, 2) {
|
| GET_NON_NULL_NATIVE_ARGUMENT(String, name, arguments->NativeArgAt(0));
|
| GET_NON_NULL_NATIVE_ARGUMENT(MirrorReference, ref, arguments->NativeArgAt(1));
|
|
|