[vm,dyn_modules] Mark extension type members appropriately.

TEST=pkg/vm_service/test/step_through_extension_type_method_call_test

Cq-Include-Trybots: luci.dart.try:vm-dyn-linux-debug-x64-try,vm-dyn-mac-debug-arm64-try
Change-Id: I3bf331e175847280964fd42eb027e9f812598bf2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/464705
Auto-Submit: Tess Strickland <sstrickl@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
This commit is contained in:
Tess Strickland
2025-12-02 06:31:15 -08:00
committed by Commit Queue
parent c65ce1f82e
commit 7af4d14267
4 changed files with 26 additions and 2 deletions
+2 -2
View File
@@ -524,7 +524,7 @@ type FieldDeclaration {
hasGetter, hasSetter,
hasInitializer, hasNontrivialInitializer, hasInitializerCode,
hasSourcePositions, hasAnnotations, hasPragma,
hasCustomScript);
hasCustomScript, isExtensionTypeMember);
PackedObject name;
PackedObject type;
@@ -557,7 +557,7 @@ type FunctionDeclaration {
isAsync, isAsyncStar, isSyncStar,
isNoSuchMethodForwarder, isExternal, isNative,
hasSourcePositions, hasAnnotations, hasPragma,
hasCustomScript);
hasCustomScript, isExtensionTypeMember);
PackedObject name;
@@ -502,6 +502,9 @@ class BytecodeGenerator extends RecursiveVisitor {
if (field.isExtensionMember) {
flags |= FieldDeclaration.isExtensionMemberFlag;
}
if (field.isExtensionTypeMember) {
flags |= FieldDeclaration.isExtensionTypeMemberFlag;
}
// In NNBD libraries, static fields with initializers are implicitly late.
if (field.isLate || (field.isStatic && field.initializer != null)) {
flags |= FieldDeclaration.isLateFlag;
@@ -569,6 +572,9 @@ class BytecodeGenerator extends RecursiveVisitor {
if (member.isExtensionMember) {
flags |= FunctionDeclaration.isExtensionMemberFlag;
}
if (member.isExtensionTypeMember) {
flags |= FunctionDeclaration.isExtensionTypeMemberFlag;
}
FunctionNode function = member.function!;
if (function.requiredParameterCount !=
+8
View File
@@ -360,6 +360,7 @@ class FieldDeclaration {
static const hasAnnotationsFlag = 1 << 14;
static const hasPragmaFlag = 1 << 15;
static const hasCustomScriptFlag = 1 << 16;
static const isExtensionTypeMemberFlag = 1 << 17;
final int flags;
final ObjectHandle name;
@@ -475,6 +476,9 @@ class FieldDeclaration {
if ((flags & isExtensionMemberFlag) != 0) {
sb.write(', extension-member');
}
if ((flags & isExtensionTypeMemberFlag) != 0) {
sb.write(', extension-type-member');
}
if ((flags & hasPragmaFlag) != 0) {
sb.write(', has-pragma');
}
@@ -526,6 +530,7 @@ class FunctionDeclaration {
static const hasAnnotationsFlag = 1 << 21;
static const hasPragmaFlag = 1 << 22;
static const hasCustomScriptFlag = 1 << 23;
static const isExtensionTypeMemberFlag = 1 << 24;
final int flags;
final ObjectHandle name;
@@ -678,6 +683,9 @@ class FunctionDeclaration {
if ((flags & isExtensionMemberFlag) != 0) {
sb.write(', extension-member');
}
if ((flags & isExtensionTypeMemberFlag) != 0) {
sb.write(', extension-type-member');
}
if ((flags & hasOptionalPositionalParamsFlag) != 0) {
sb.write(', has-optional-positional-params');
}