Skip to content

Commit 223c3a1

Browse files
alexmarkovCommit Queue
authored andcommitted
[vm, dynamic_modules] Inherit IsDynamicallyOverridden when creating method extractor
A method extractor (implementing get:foo for a method foo()) can be used as an interface target. If original method can be overridden in a dynamic module, then method extractor can be overridden too. So IsDynamicallyOverridden flag should be copied when creating a method extractor. TEST=dynamic_modules_suite/tearoff_no_concrete_impl Fixes #60116 Change-Id: I54439426645b3daf308d18da6e0d06602b9ec30f Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/409360 Reviewed-by: Slava Egorov <[email protected]> Commit-Queue: Alexander Markov <[email protected]>
1 parent 3fe4dae commit 223c3a1

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

runtime/vm/object.cc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4124,6 +4124,9 @@ FunctionPtr Function::CreateMethodExtractor(const String& getter_name) const {
41244124
extractor.set_extracted_method_closure(closure_function);
41254125
extractor.set_is_debuggable(false);
41264126
extractor.set_is_visible(false);
4127+
#if !defined(DART_PRECOMPILED_RUNTIME)
4128+
extractor.SetIsDynamicallyOverridden(IsDynamicallyOverridden());
4129+
#endif
41274130

41284131
signature ^= ClassFinalizer::FinalizeType(signature);
41294132
extractor.SetSignature(signature);

0 commit comments

Comments
 (0)