Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(569)

Unified Diff: pkg/compiler/lib/src/js_emitter/full_emitter/container_builder.dart

Issue 2908153003: It's alive! (Closed)
Patch Set: Updated cf. comments Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/compiler/lib/src/js_emitter/full_emitter/container_builder.dart
diff --git a/pkg/compiler/lib/src/js_emitter/full_emitter/container_builder.dart b/pkg/compiler/lib/src/js_emitter/full_emitter/container_builder.dart
index 9ea45e35705a1110e8f482f5e19b47911464f666..1d4eb384746cdcff5e22b89d1281881ee451eb4b 100644
--- a/pkg/compiler/lib/src/js_emitter/full_emitter/container_builder.dart
+++ b/pkg/compiler/lib/src/js_emitter/full_emitter/container_builder.dart
@@ -6,12 +6,9 @@ library dart2js.js_emitter.full_emitter.container_builder;
import '../../constants/values.dart';
import '../../elements/elements.dart'
- show
- Element,
- Elements,
- FunctionSignature,
- MetadataAnnotation,
- MethodElement;
+ show Element, Elements, MetadataAnnotation, MethodElement;
+import '../../elements/entities.dart';
+import '../../elements/names.dart';
import '../../js/js.dart' as jsAst;
import '../../js/js.dart' show js;
import '../js_emitter.dart' hide Emitter, EmitterFactory;
@@ -24,9 +21,9 @@ import 'emitter.dart';
/// [CodeEmitterTask].
class ContainerBuilder extends CodeEmitterHelper {
void addMemberMethod(DartMethod method, ClassBuilder builder) {
- MethodElement member = method.element;
+ FunctionEntity member = method.element;
jsAst.Name name = method.name;
- FunctionSignature parameters = member.functionSignature;
+ ParameterStructure parameters = member.parameterStructure;
jsAst.Expression code = method.code;
bool needsStubs = method.parameterStubs.isNotEmpty;
bool canBeApplied = method.canBeApplied;
@@ -115,11 +112,11 @@ class ContainerBuilder extends CodeEmitterHelper {
// On [requiredParameterCount], the lower bit is set if this method can be
// called reflectively.
- int requiredParameterCount = parameters.requiredParameterCount << 1;
- if (member.isAccessor) requiredParameterCount++;
+ int requiredParameterCount = parameters.requiredParameters << 1;
+ if (member.isGetter || member.isSetter) requiredParameterCount++;
- int optionalParameterCount = parameters.optionalParameterCount << 1;
- if (parameters.optionalParametersAreNamed) optionalParameterCount++;
+ int optionalParameterCount = parameters.optionalParameters << 1;
+ if (parameters.namedParameters.isNotEmpty) optionalParameterCount++;
List tearOffInfo = [callSelectorString];
@@ -140,7 +137,7 @@ class ContainerBuilder extends CodeEmitterHelper {
expressions
..addAll(tearOffInfo)
- ..add((tearOffName == null || member.isAccessor)
+ ..add((tearOffName == null || member.isGetter || member.isSetter)
? js("null")
: js.quoteName(tearOffName))
..add(js.number(requiredParameterCount))
@@ -149,7 +146,9 @@ class ContainerBuilder extends CodeEmitterHelper {
..addAll(task.metadataCollector.reifyDefaultArguments(member));
if (canBeReflected || canBeApplied) {
- parameters.forEachParameter((Element parameter) {
+ // TODO(johnniwinther): Support entities.
+ MethodElement method = member;
+ method.functionSignature.forEachParameter((Element parameter) {
expressions.add(task.metadataCollector.reifyName(parameter.name));
if (backend.mirrorsData.mustRetainMetadata) {
Iterable<jsAst.Expression> metadataIndices =
@@ -163,6 +162,7 @@ class ContainerBuilder extends CodeEmitterHelper {
}
});
}
+ Name memberName = new Name(member.name, member.library);
if (canBeReflected) {
jsAst.LiteralString reflectionName;
if (member.isConstructor) {
@@ -172,13 +172,13 @@ class ContainerBuilder extends CodeEmitterHelper {
reflectionName = new jsAst.LiteralString(
'"new ${Elements.reconstructConstructorName(member)}"');
} else {
- reflectionName = js.string(namer.privateName(member.memberName));
+ reflectionName = js.string(namer.privateName(memberName));
}
expressions
..add(reflectionName)
..addAll(task.metadataCollector.computeMetadata(member));
} else if (isClosure && canBeApplied) {
- expressions.add(js.string(namer.privateName(member.memberName)));
+ expressions.add(js.string(namer.privateName(memberName)));
}
jsAst.ArrayInitializer arrayInit =

Powered by Google App Engine
This is Rietveld 408576698