Skip to content

Commit 51d0bab

Browse files
johnniwintherCommit Queue
authored andcommitted
[cfe] Cleanup declaration and encoding for SourceFactoryBuilder
Change-Id: I3af44198c4e61da39d08e3954b61b7fb3ad9c135 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/416962 Reviewed-by: Jens Johansen <[email protected]> Commit-Queue: Johnni Winther <[email protected]>
1 parent a6b1129 commit 51d0bab

File tree

7 files changed

+1239
-1223
lines changed

7 files changed

+1239
-1223
lines changed
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
// Copyright (c) 2025, the Dart project authors. Please see the AUTHORS file
2+
// for details. All rights reserved. Use of this source code is governed by a
3+
// BSD-style license that can be found in the LICENSE file.
4+
5+
import 'package:kernel/ast.dart';
6+
import 'package:kernel/transformations/flags.dart';
7+
8+
import '../../base/identifiers.dart';
9+
import '../../base/local_scope.dart';
10+
import '../../builder/formal_parameter_builder.dart';
11+
import '../../builder/type_builder.dart';
12+
import '../../kernel/body_builder_context.dart';
13+
import '../../source/source_factory_builder.dart';
14+
import 'declaration.dart';
15+
16+
class FactoryBodyBuilderContext extends BodyBuilderContext {
17+
final SourceFactoryBuilder _builder;
18+
19+
final FactoryDeclaration _declaration;
20+
21+
final Member _member;
22+
23+
FactoryBodyBuilderContext(this._builder, this._declaration, this._member)
24+
: super(_builder.libraryBuilder, _builder.declarationBuilder,
25+
isDeclarationInstanceMember: _builder.isDeclarationInstanceMember);
26+
27+
@override
28+
VariableDeclaration getFormalParameter(int index) {
29+
return _declaration.getFormalParameter(index);
30+
}
31+
32+
@override
33+
VariableDeclaration? getTearOffParameter(int index) {
34+
return _declaration.getTearOffParameter(index);
35+
}
36+
37+
@override
38+
TypeBuilder get returnType => _declaration.returnType;
39+
40+
@override
41+
// Coverage-ignore(suite): Not run.
42+
List<FormalParameterBuilder>? get formals => _declaration.formals;
43+
44+
@override
45+
LocalScope computeFormalParameterInitializerScope(LocalScope parent) {
46+
/// Initializer formals or super parameters cannot occur in getters so
47+
/// we don't need to create a new scope.
48+
return parent;
49+
}
50+
51+
@override
52+
FormalParameterBuilder? getFormalParameterByName(Identifier name) {
53+
return _declaration.getFormal(name);
54+
}
55+
56+
@override
57+
int get memberNameLength => _builder.name.length;
58+
59+
@override
60+
FunctionNode get function {
61+
return _declaration.function;
62+
}
63+
64+
@override
65+
// Coverage-ignore(suite): Not run.
66+
bool get isFactory => true;
67+
68+
@override
69+
// Coverage-ignore(suite): Not run.
70+
bool get isNativeMethod {
71+
return _declaration.isNative;
72+
}
73+
74+
@override
75+
bool get isExternalFunction {
76+
return _declaration.isExternal;
77+
}
78+
79+
@override
80+
bool get isSetter => false;
81+
82+
@override
83+
int get memberNameOffset => _declaration.fileOffset;
84+
85+
@override
86+
// Coverage-ignore(suite): Not run.
87+
void registerSuperCall() {
88+
_member.transformerFlags |= TransformerFlag.superCalls;
89+
}
90+
91+
@override
92+
void registerFunctionBody(Statement body) {
93+
_declaration.setBody(body);
94+
}
95+
96+
@override
97+
void setAsyncModifier(AsyncMarker asyncModifier) {
98+
_declaration.setAsyncModifier(asyncModifier);
99+
}
100+
101+
@override
102+
bool get isRedirectingFactory => _declaration.redirectionTarget != null;
103+
104+
@override
105+
DartType get returnTypeContext {
106+
return _declaration.function.returnType;
107+
}
108+
109+
@override
110+
String get redirectingFactoryTargetName {
111+
return _declaration.redirectionTarget!.fullNameForErrors;
112+
}
113+
}

0 commit comments

Comments
 (0)