22#if !defined(DART_PRECOMPILED_RUNTIME)
24#define RETURN_OR_PROPAGATE(expr) \
25 ObjectPtr result = expr; \
26 if (IsErrorClassId(result->GetClassIdMayBeSmi())) { \
27 Exceptions::PropagateError(Error::Handle(Error::RawCast(result))); \
32 const Array& constructor_arguments) {
34 const String& constructor_name = Symbols::DotUnder();
37 mirrors_lib, mirror_class_name, constructor_name, constructor_arguments));
41 return Instance::Cast(
result).ptr();
51 const Array& arguments,
52 const Array& argument_names,
55 const Smi& invocation_type =
59 args.SetAt(0, receiver);
61 args.SetAt(2, invocation_type);
62 args.SetAt(3, Object::smi_zero());
63 args.SetAt(4, Object::null_type_arguments());
64 args.SetAt(5, arguments);
65 args.SetAt(6, argument_names);
89 if (!
error.IsNull()) {
100 Zone*
const Z =
T->zone();
103 const intptr_t non_implicit_param_count =
105 const intptr_t index_of_first_optional_param =
107 const intptr_t index_of_first_named_param =
126 bool has_extra_parameter_info =
true;
127 if (non_implicit_param_count == 0) {
128 has_extra_parameter_info =
false;
132 has_extra_parameter_info =
false;
135 if (has_extra_parameter_info) {
145 param_descriptor ^=
result.ptr();
151 args.SetAt(2, owner_mirror);
153 if (!has_extra_parameter_info) {
159 for (intptr_t
i = 0;
i < non_implicit_param_count;
i++) {
161 if (
i >= index_of_first_named_param) {
164 }
else if (!func.
IsNull()) {
173 if (has_extra_parameter_info) {
181 ASSERT(default_value.
IsNull() || default_value.IsInstance());
189 args.SetAt(6, is_final);
190 args.SetAt(7, default_value);
191 args.SetAt(8, metadata);
196 return results.
ptr();
202 args.SetAt(0, param);
204 args.SetAt(2, owner_mirror);
212 if (num_type_params == 0) {
213 return Object::empty_array().ptr();
218 for (intptr_t
i = 0;
i < num_type_params;
i++) {
230 const Class& closure_class =
248 name, func.is_extension_member() || func.is_extension_type_member());
250 args.SetAt(2, owner_mirror);
251 args.SetAt(3, instantiator);
254 intptr_t kind_flags = 0;
256 (
static_cast<intptr_t
>(func.is_abstract()) << Mirrors::kAbstract);
261 bool is_ctor = (func.
kind() == UntaggedFunction::kConstructor);
262 kind_flags |= (
static_cast<intptr_t
>(is_ctor) << Mirrors::kConstructor);
263 kind_flags |= (
static_cast<intptr_t
>(is_ctor && func.is_const())
264 << Mirrors::kConstCtor);
267 << Mirrors::kGenerativeCtor);
268 kind_flags |= (
static_cast<intptr_t
>(
false) << Mirrors::kRedirectingCtor);
269 kind_flags |= (
static_cast<intptr_t
>(is_ctor && func.
IsFactory())
270 << Mirrors::kFactoryCtor);
272 (
static_cast<intptr_t
>(func.is_external()) << Mirrors::kExternal);
273 bool is_synthetic = func.is_synthetic();
274 kind_flags |= (
static_cast<intptr_t
>(is_synthetic) << Mirrors::kSynthetic);
275 kind_flags |= (
static_cast<intptr_t
>(func.is_extension_member())
276 << Mirrors::kExtensionMember);
277 kind_flags |= (
static_cast<intptr_t
>(func.is_extension_type_member())
278 << Mirrors::kExtensionTypeMember);
292 args.SetAt(0, field_ref);
294 args.SetAt(2, owner_mirror);
295 args.SetAt(3, Object::null_instance());
307 const Bool& is_declaration,
319 args.SetAt(3, owner_mirror);
329 static const char*
const censored_libraries[] = {
334 for (
const char* censored_library : censored_libraries) {
335 if (url.
Equals(censored_library)) {
365 args.SetAt(0, identifiers);
373 const Array& show_names,
374 const Array& hide_names,
377 const String& prefix_name,
378 const bool is_import,
379 const bool is_deferred) {
382 if (importee_mirror.
IsNull()) {
387 intptr_t n = show_names.
IsNull() ? 0 : show_names.
Length();
392 for (intptr_t j = 0; j < n; j++) {
393 t = show_names.
At(j);
395 combinators.
SetAt(
i++, t);
397 for (intptr_t j = 0; j <
m; j++) {
398 t = hide_names.
At(j);
400 combinators.
SetAt(
i++, t);
404 args.SetAt(0, importer);
409 args.SetAt(1, importee_mirror);
413 args.SetAt(2, combinators);
414 args.SetAt(3, prefix_name);
417 args.SetAt(6, metadata);
425 const bool is_import,
426 const bool is_deferred) {
433 if (metadata.IsError()) {
440 prefix_name =
prefix.name();
444 hide_names, metadata,
prefix,
445 prefix_name, is_import, is_deferred);
450 arguments->NativeArgAt(0));
452 if (!deferred_lib.
Loaded()) {
472 for (intptr_t
i = 0;
i < ports.
Length();
i++) {
485 for (intptr_t
i = 0;
i < ports.
Length();
i++) {
499 if (entry.IsLibraryPrefix()) {
502 for (intptr_t
i = 0;
i < ports.
Length();
i++) {
506 true,
prefix.is_deferred_load());
522 if (
type.IsFunctionType()) {
525 if (
type.IsRecordType()) {
531 if (
type.HasTypeClass()) {
540 args.SetAt(0, Symbols::Dynamic());
544 args.SetAt(0, Symbols::Never());
549 if (!
type.IsNullType()) {
554 Object::null_instance());
557 }
else if (
type.IsTypeParameter()) {
575 const Instance& root_library_mirror =
579 args.SetAt(0, debug_name);
580 args.SetAt(1, root_library_mirror);
599#define CHECK_KIND_SHIFT(name) \
600 fname ^= String::New(#name); \
601 field = cls.LookupField(fname); \
602 ASSERT(!field.IsNull()); \
603 if (field.IsUninitialized()) { \
604 error ^= field.InitializeStatic(); \
605 ASSERT(error.IsNull()); \
607 value ^= field.StaticValue(); \
608 ASSERT(value.Value() == Mirrors::name);
610#undef CHECK_KIND_SHIFT
622 if (
type.IsInstantiated()) {
623 return type.Canonicalize(thread);
626 if (!instantiator.
IsNull() && instantiator.IsType()) {
630 instantiator_type_args = instantiator.
arguments();
632 instantiator_type_args =
633 Type::Cast(instantiator)
634 .GetInstanceTypeArguments(thread,
false);
638 instantiator_type_args, Object::null_type_arguments(),
kAllFree,
641 return result.Canonicalize(thread);
646 zone, isolate->group()->object_store()->libraries());
648 const intptr_t num_libraries = libraries.
Length();
654 for (
int i = 0;
i < num_libraries;
i++) {
655 library ^= libraries.
At(
i);
658 library_mirrors.
Add(library_mirror);
661 return library_mirrors.
ptr();
679 if (!isolate->group()->HasTagHandler()) {
687 if (uri.StartsWith(Symbols::DartScheme())) {
688 canonical_uri = uri.
ptr();
690 isolate->BlockClassFinalization();
692 zone, isolate->group()->CallTagHandler(
695 zone, isolate->group()->object_store()->root_library()),
697 isolate->UnblockClassFinalization();
699 if (
result.IsLanguageError()) {
703 }
else if (!
result.IsString()) {
707 canonical_uri ^=
result.ptr();
718 isolate->BlockClassFinalization();
720 zone, isolate->group()->CallTagHandler(
723 zone, isolate->group()->object_store()->root_library()),
725 isolate->UnblockClassFinalization();
727 if (
result.IsLanguageError()) {
753 FATAL(
"Non-library from tag handler");
760 type.IsFunctionType()
762 :
type.type_class());
770 Object::null_instance());
783 type.IsFunctionType()
785 :
type.type_class());
791 "Type must be a generic class or function.")));
800 "Number of type arguments does not match.")));
805 intptr_t num_expected_type_arguments =
args.Length();
810 for (intptr_t
i = 0;
i <
args.Length();
i++) {
817 "Type arguments must be instances of Type.")));
821 type_arg ^=
args.At(
i);
827 return instantiated_type.
ptr();
846 if (reflectee.IsMirrorReference()) {
849 }
else if (reflectee.IsTypeParameter()) {
850 decl = reflectee.
ptr();
858 if (decl.IsClass()) {
861 }
else if (decl.IsFunction()) {
862 klass = Function::Cast(decl).Owner();
864 }
else if (decl.IsField()) {
865 klass = Field::Cast(decl).Owner();
867 }
else if (decl.IsLibrary()) {
868 library ^= decl.
ptr();
869 }
else if (decl.IsTypeParameter()) {
871 return Object::empty_array().ptr();
873 return Object::empty_array().ptr();
877 if (metadata.IsError()) {
880 return metadata.
ptr();
885 arguments->NativeArgAt(0));
887 const auto& getter_name = Symbols::GetCall();
888 const Class& closure_class =
910 return type.Canonicalize(thread);
918 return library.
url();
925 type.IsFunctionType()
927 :
type.type_class());
930 return super_type.
ptr();
937 type.IsFunctionType()
939 :
type.type_class());
948 type.IsFunctionType()
950 :
type.type_class());
952 if (!
error.IsNull()) {
963 type.IsFunctionType()
965 :
type.type_class());
967 if (!
error.IsNull()) {
975 for (
int i = 0;
i < interfaces.
Length();
i++) {
976 interface ^= interfaces.
At(
i);
978 interfaces_inst.
SetAt(
i, interface);
981 return interfaces_inst.
ptr();
988 type.IsFunctionType()
990 :
type.type_class());
994 mixin_type ^= interfaces.
At(interfaces.
Length() - 1);
997 return mixin_type.
ptr();
1003 arguments->NativeArgAt(1));
1006 type.IsFunctionType()
1008 :
type.type_class());
1012 mixin_type ^= interfaces.
At(interfaces.
Length() - 1);
1014 if (mixin_type.
IsNull()) {
1015 return mixin_type.
ptr();
1023 arguments->NativeArgAt(0));
1025 arguments->NativeArgAt(1));
1030 if (!
error.IsNull()) {
1035 const intptr_t num_fields = fields.
Length();
1038 const intptr_t num_functions = functions.
Length();
1045 for (intptr_t
i = 0;
i < num_fields;
i++) {
1046 field ^= fields.
At(
i);
1049 member_mirrors.
Add(member_mirror);
1054 for (intptr_t
i = 0;
i < num_functions;
i++) {
1055 func ^= functions.
At(
i);
1056 if (func.is_reflectable() &&
1057 (func.
kind() == UntaggedFunction::kRegularFunction ||
1058 func.
kind() == UntaggedFunction::kGetterFunction ||
1059 func.
kind() == UntaggedFunction::kSetterFunction)) {
1062 member_mirrors.
Add(member_mirror);
1066 return member_mirrors.
ptr();
1071 arguments->NativeArgAt(0));
1073 arguments->NativeArgAt(1));
1078 if (!
error.IsNull()) {
1083 const intptr_t num_functions = functions.
Length();
1090 for (intptr_t
i = 0;
i < num_functions;
i++) {
1091 func ^= functions.
At(
i);
1092 if (func.is_reflectable() &&
1093 func.
kind() == UntaggedFunction::kConstructor) {
1094 constructor_mirror =
1096 constructor_mirrors.
Add(constructor_mirror);
1100 return constructor_mirrors.
ptr();
1105 arguments->NativeArgAt(0));
1123 if (entry.IsClass()) {
1124 const Class& klass = Class::Cast(entry);
1129 if (!
error.IsNull()) {
1136 member_mirrors.
Add(member_mirror);
1137 }
else if (entry.IsField()) {
1138 const Field& field = Field::Cast(entry);
1141 member_mirrors.
Add(member_mirror);
1143 }
else if (entry.IsFunction()) {
1144 const Function& func = Function::Cast(entry);
1145 if (func.is_reflectable() &&
1146 (func.
kind() == UntaggedFunction::kRegularFunction ||
1147 func.
kind() == UntaggedFunction::kGetterFunction ||
1148 func.
kind() == UntaggedFunction::kSetterFunction)) {
1151 member_mirrors.
Add(member_mirror);
1156 return member_mirrors.
ptr();
1163 if (!
error.IsNull()) {
1174 type.IsFunctionType()
1176 :
type.type_class());
1179 if (num_params == 0) {
1180 return Object::empty_array().ptr();
1192 if (
args.IsNull()) {
1193 arg_type = Object::dynamic_type().
ptr();
1195 for (intptr_t
i = 0;
i < num_params;
i++) {
1202 for (intptr_t
i = 0;
i < num_params;
i++) {
1203 arg_type =
args.TypeAt(
i);
1216 Instance::null_instance());
1221 return param.bound();
1230 arguments->NativeArgAt(2));
1260 return type.Canonicalize(thread);
1271 if (
function.IsImplicitClosureFunction() || parent.is_extension_member() ||
1272 parent.is_extension_type_member()) {
1286 Closure::Cast(
closure).instantiator_type_arguments());
1293 instantiator =
Type::New(cls, arguments);
1309 arguments->NativeArgAt(2));
1322 if (!
error.IsNull()) {
1346 arguments->NativeArgAt(2));
1352 if (!
error.IsNull()) {
1363 String& internal_constructor_name =
1365 if (!constructor_name.IsNull() && constructor_name.Length() > 0) {
1366 internal_constructor_name =
1368 external_constructor_name = internal_constructor_name.
ptr();
1374 if (lookup_constructor.
IsNull() ||
1375 (lookup_constructor.
kind() != UntaggedFunction::kConstructor) ||
1376 !lookup_constructor.is_reflectable()) {
1378 external_constructor_name, explicit_args, arg_names,
1386 error_args.
SetAt(0, klass_name);
1396 if (!
type.IsInstantiated()) {
1402 type_arguments =
type.GetInstanceTypeArguments(thread);
1406 const intptr_t num_explicit_args = explicit_args.Length();
1407 const intptr_t num_implicit_args = 1;
1413 for (
int i = 0;
i < num_explicit_args;
i++) {
1414 explicit_argument = explicit_args.At(
i);
1415 args.SetAt(
i + num_implicit_args, explicit_argument);
1418 const int kTypeArgsLen = 0;
1424 external_constructor_name = lookup_constructor.
name();
1426 external_constructor_name, explicit_args, arg_names,
1437 const Object& type_error =
1439 args, args_descriptor, type_arguments));
1440 if (!type_error.
IsNull()) {
1451 if (!type_arguments.
IsNull()) {
1457 args.SetAt(0, new_object);
1460 args.SetAt(0, type_arguments);
1465 lookup_constructor,
args, args_descriptor_array));
1475 return new_object.
ptr();
1488 arguments->NativeArgAt(2));
1521 Object::null_instance(), instantiator);
1548 type.Canonicalize(thread);
1571 if (reflectee.IsMirrorReference()) {
1574 }
else if (reflectee.IsTypeParameter()) {
1575 decl = reflectee.
ptr();
1583 if (decl.IsFunction()) {
1584 const Function& func = Function::Cast(decl);
1591 }
else if (decl.IsClass()) {
1592 const Class& cls = Class::Cast(decl);
1598 }
else if (decl.IsField()) {
1599 const Field& field = Field::Cast(decl);
1602 }
else if (decl.IsTypeParameter()) {
1604 }
else if (decl.IsLibrary()) {
1605 const Library& lib = Library::Cast(decl);
1620 if (token_pos == TokenPosition::kNoSource) {
1625 intptr_t from_line = 0, from_col = 0;
1626 script.GetTokenLocation(token_pos, &from_line, &from_col);
1639 type.Canonicalize(thread);
virtual classid_t type_class_id() const
StringPtr UserVisibleName() const
virtual TypeArgumentsPtr arguments() const
void SetIsFinalized() const
static bool IsFfiEnabled()
static ArrayPtr NewBoxed(intptr_t type_args_len, intptr_t num_arguments, const Array &optional_arguments_names, Heap::Space space=Heap::kOld)
intptr_t FirstArgIndex() const
static ArrayPtr New(intptr_t len, Heap::Space space=Heap::kNew)
void MakeImmutable() const
ObjectPtr At(intptr_t index) const
void SetAt(intptr_t index, const Object &value) const
static const Bool & False()
static const Bool & Get(bool value)
static const Bool & True()
static AbstractTypePtr FinalizeType(const AbstractType &type, FinalizationKind finalization=kCanonicalize)
static bool ProcessPendingClasses()
FunctionPtr LookupFunctionAllowPrivate(const String &name) const
ObjectPtr InvokeSetter(const String &selector, const Instance &argument, bool respect_reflectable=true, bool check_is_entrypoint=false) const
LibraryPtr library() const
ObjectPtr Invoke(const String &selector, const Array &arguments, const Array &argument_names, bool respect_reflectable=true, bool check_is_entrypoint=false) const
ObjectPtr InvokeGetter(const String &selector, bool throw_nsm_if_absent, bool respect_reflectable=true, bool check_is_entrypoint=false) const
TypePtr super_type() const
ArrayPtr interfaces() const
bool IsDynamicClass() const
TypePtr DeclarationType() const
TokenPosition token_pos() const
ErrorPtr EnsureIsFinalized(Thread *thread) const
ErrorPtr EnsureIsAllocateFinalized(Thread *thread) const
bool is_enum_class() const
bool IsNeverClass() const
TypeParameterPtr TypeParameterAt(intptr_t index, Nullability nullability=Nullability::kNonNullable) const
bool is_transformed_mixin_application() const
bool is_synthesized_class() const
intptr_t NumTypeParameters(Thread *thread) const
ArrayPtr current_functions() const
static ObjectPtr InvokeFunction(const Function &function, const Array &arguments)
static ObjectPtr InstanceCreate(const Library &library, const String &exception_name, const String &constructor_name, const Array &arguments)
static DART_NORETURN void ThrowByType(ExceptionType type, const Array &arguments)
static DART_NORETURN void ThrowArgumentError(const Instance &arg)
@ kAbstractClassInstantiation
static DART_NORETURN void ThrowCompileTimeError(const LanguageError &error)
static DART_NORETURN void PropagateError(const Error &error)
bool is_reflectable() const
bool is_extension_member() const
AbstractTypePtr type() const
bool is_extension_type_member() const
TokenPosition token_pos() const
intptr_t NumOptionalNamedParameters() const
intptr_t num_implicit_parameters() const
AbstractTypePtr ParameterTypeAt(intptr_t index) const
StringPtr ParameterNameAt(intptr_t index) const
AbstractTypePtr result_type() const
intptr_t NumParameters() const
intptr_t NumOptionalParameters() const
StringPtr ParameterNameAt(intptr_t index) const
bool IsImplicitConstructor() const
StringPtr GetSource() const
ObjectPtr DoArgumentTypesMatch(const Array &args, const ArgumentsDescriptor &arg_names) const
FunctionPtr parent_function() const
bool IsGetterFunction() const
bool AreValidArguments(intptr_t num_type_arguments, intptr_t num_arguments, const Array &argument_names, String *error_message) const
TokenPosition token_pos() const
bool IsNonImplicitClosureFunction() const
CodePtr EnsureHasCode() const
bool IsGenerativeConstructor() const
UntaggedFunction::Kind kind() const
bool IsSetterFunction() const
AbstractTypePtr result_type() const
void Add(const Object &value, Heap::Space space=Heap::kNew) const
static GrowableObjectArrayPtr New(Heap::Space space=Heap::kNew)
ObjectPtr At(intptr_t index) const
virtual void SetTypeArguments(const TypeArguments &value) const
static InstancePtr New(const Class &cls, Heap::Space space=Heap::kNew)
static int EncodeType(Level level, Kind kind)
ObjectStore * object_store() const
static IsolateGroup * Current()
IsolateGroup * group() const
const char * name() const
static LibraryPtr CoreLibrary()
StringPtr PrivateName(const String &name) const
static LibraryPtr MirrorsLibrary()
static bool IsPrivate(const String &name)
ObjectPtr InvokeGetter(const String &selector, bool throw_nsm_if_absent, bool respect_reflectable=true, bool check_is_entrypoint=false) const
ArrayPtr LoadedScripts() const
ObjectPtr InvokeSetter(const String &selector, const Instance &argument, bool respect_reflectable=true, bool check_is_entrypoint=false) const
void EnsureTopLevelClassIsFinalized() const
ClassPtr LookupClassAllowPrivate(const String &name) const
ObjectPtr GetMetadata(const Object &declaration) const
ObjectPtr Invoke(const String &selector, const Array &arguments, const Array &argument_names, bool respect_reflectable=true, bool check_is_entrypoint=false) const
static LibraryPtr NativeWrappersLibrary()
ClassPtr LookupClass(const String &name) const
static LibraryPtr LookupLibrary(Thread *thread, const String &url)
ObjectPtr referent() const
static MirrorReferencePtr New(const Object &referent, Heap::Space space=Heap::kNew)
ArrayPtr hide_names() const
ArrayPtr show_names() const
LibraryPtr target() const
static char * SCreate(Zone *zone, const char *format,...) PRINTF_ATTRIBUTE(2
virtual const char * ToCString() const
@ kParameterDefaultValueOffset
@ kParameterIsFinalOffset
@ kParameterMetadataOffset
static FunctionPtr ResolveDynamicAnyArgs(Zone *zone, const Class &receiver_class, const String &function_name, bool allow_add)
static FunctionPtr ResolveFunction(Zone *zone, const Class &receiver_class, const String &function_name)
static SmiPtr New(intptr_t value)
static StringPtr ScrubNameRetainPrivate(const String &name, bool is_extension=false)
bool Equals(const String &str) const
static StringPtr New(const char *cstr, Heap::Space space=Heap::kNew)
static StringPtr Concat(const String &str1, const String &str2, Heap::Space space=Heap::kNew)
static const String & Void()
static const String & Dot()
static Thread * Current()
Isolate * isolate() const
void SetTypeAt(intptr_t index, const AbstractType &value) const
static TypeArgumentsPtr New(intptr_t len, Heap::Space space=Heap::kOld)
virtual AbstractTypePtr Canonicalize(Thread *thread) const
TypeArgumentsPtr GetInstanceTypeArguments(Thread *thread, bool canonicalize=true) const
static TypePtr NullType()
virtual bool IsInstantiated(Genericity genericity=kAny, intptr_t num_free_fun_type_params=kAllFree) const
virtual AbstractTypePtr Canonicalize(Thread *thread) const
static TypePtr New(const Class &clazz, const TypeArguments &arguments, Nullability nullability=Nullability::kNonNullable, Heap::Space space=Heap::kOld)
G_BEGIN_DECLS G_MODULE_EXPORT FlValue * args
const uint8_t uint32_t uint32_t GError ** error
Dart_NativeFunction function
#define HANDLESCOPE(thread)
#define RETURN_OR_PROPAGATE(expr)
#define MIRRORS_KIND_SHIFT_LIST(V)
ObjectPtr BuildParameterDescriptor(const Function &function)
static AbstractTypePtr InstantiateType(const AbstractType &type, const AbstractType &instantiator)
static InstancePtr CreateIsolateMirror()
static InstancePtr CreateTypeMirror(const AbstractType &type)
static void ThrowLanguageError(const char *message)
static InstancePtr CreateFunctionTypeMirror(const AbstractType &type)
static InstancePtr CreateClassMirror(const Class &cls, const AbstractType &type, const Bool &is_declaration, const Instance &owner_mirror)
static InstancePtr CreateCombinatorMirror(const Object &identifiers, bool is_show)
static InstancePtr CreateMirror(const String &mirror_class_name, const Array &constructor_arguments)
static InstancePtr CreateMethodMirror(const Function &func, const Instance &owner_mirror, const AbstractType &instantiator)
static InstancePtr CreateParameterMirrorList(const Function &func, const FunctionType &signature, const Instance &owner_mirror)
static InstancePtr CreateLibraryDependencyMirror(Thread *thread, const Instance &importer, const Library &importee, const Array &show_names, const Array &hide_names, const Object &metadata, const LibraryPrefix &prefix, const String &prefix_name, const bool is_import, const bool is_deferred)
static InstancePtr CreateLibraryMirror(Thread *thread, const Library &lib)
static InstancePtr CreateVariableMirror(const Field &field, const Instance &owner_mirror)
DEFINE_NATIVE_ENTRY(List_allocate, 0, 2)
static void ThrowNoSuchMethod(const Instance &receiver, const String &function_name, const Array &arguments, const Array &argument_names, const InvocationMirror::Level level, const InvocationMirror::Kind kind)
static InstancePtr CreateTypeVariableList(const Class &cls)
const char *const function_name
static InstancePtr CreateSourceLocation(const String &uri, intptr_t line, intptr_t column)
static void EnsureConstructorsAreCompiled(const Function &func)
static void VerifyMethodKindShifts()
static bool IsCensoredLibrary(const String &url)
static InstancePtr CreateTypeVariableMirror(const TypeParameter ¶m, const Instance &owner_mirror)
std::function< void()> closure
#define GET_NATIVE_ARGUMENT(type, name, value)
#define GET_NON_NULL_NATIVE_ARGUMENT(type, name, value)