[ VM / dart:mirrors ] Mark private members of dart:* as non-reflectable (Issue #34194).
Change-Id: If3d79955c7bd336a54e3716d22e1c3c8ee2e07ee
Reviewed-on: https://dart-review.googlesource.com/72141
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Ben Konyi <bkonyi@google.com>
diff --git a/runtime/vm/kernel_loader.cc b/runtime/vm/kernel_loader.cc
index 17f062d..a7dd4cd 100644
--- a/runtime/vm/kernel_loader.cc
+++ b/runtime/vm/kernel_loader.cc
@@ -1385,6 +1385,12 @@
true, // is_method
false, // is_closure
&function_node_helper);
+
+ if (library.is_dart_scheme() &&
+ H.IsPrivate(constructor_helper.canonical_name_)) {
+ function.set_is_reflectable(false);
+ }
+
if (constructor_helper.IsSynthetic()) {
function.set_is_debuggable(false);
}
@@ -1603,8 +1609,11 @@
expression_evaluation_function_ = function.raw();
}
function.set_kernel_offset(procedure_offset);
- function.set_is_reflectable(function.is_reflectable() &&
- library.raw() != Library::InternalLibrary());
+ if ((library.is_dart_scheme() &&
+ H.IsPrivate(procedure_helper.canonical_name_)) ||
+ (function.is_static() && (library.raw() == Library::InternalLibrary()))) {
+ function.set_is_reflectable(false);
+ }
ActiveMemberScope active_member(&active_class_, &function);