| Index: pkg/compiler/lib/src/js_emitter/native_emitter.dart
|
| diff --git a/pkg/compiler/lib/src/js_emitter/native_emitter.dart b/pkg/compiler/lib/src/js_emitter/native_emitter.dart
|
| index dab8fe010b2bc0e672380ca0bb10f7a763dac109..6377d271ff576dc317546927815c94791c4db8d3 100644
|
| --- a/pkg/compiler/lib/src/js_emitter/native_emitter.dart
|
| +++ b/pkg/compiler/lib/src/js_emitter/native_emitter.dart
|
| @@ -5,7 +5,6 @@
|
| part of dart2js.js_emitter;
|
|
|
| class NativeEmitter {
|
| -
|
| // TODO(floitsch): the native-emitter should not know about ClassBuilders.
|
| final Map<Element, full_js_emitter.ClassBuilder> cachedBuilders;
|
|
|
| @@ -71,7 +70,8 @@ class NativeEmitter {
|
| * [classesModifiedByEmitRTISupport] contains the list of classes that must
|
| * exist, because runtime-type support adds information to the class.
|
| */
|
| - Set<Class> prepareNativeClasses(List<Class> classes,
|
| + Set<Class> prepareNativeClasses(
|
| + List<Class> classes,
|
| Set<ClassElement> interceptorClassesNeededByConstants,
|
| Set<ClassElement> classesModifiedByEmitRTISupport) {
|
| assert(classes.every((Class cls) => cls != null));
|
| @@ -137,9 +137,9 @@ class NativeEmitter {
|
| needed = true;
|
| }
|
| if (backend.isJsInterop(classElement)) {
|
| - needed = true; // TODO(jacobr): we don't need all interop classes.
|
| + needed = true; // TODO(jacobr): we don't need all interop classes.
|
| } else if (cls.isNative &&
|
| - backend.nativeData.hasNativeTagsForcedNonLeaf(classElement)) {
|
| + backend.nativeData.hasNativeTagsForcedNonLeaf(classElement)) {
|
| needed = true;
|
| nonLeafClasses.add(cls);
|
| }
|
| @@ -162,8 +162,7 @@ class NativeEmitter {
|
| List<String> nativeTags =
|
| backend.nativeData.getNativeTagsOfClass(cls.element);
|
|
|
| - if (nonLeafClasses.contains(cls) ||
|
| - extensionPoints.containsKey(cls)) {
|
| + if (nonLeafClasses.contains(cls) || extensionPoints.containsKey(cls)) {
|
| nonleafTags
|
| .putIfAbsent(cls, () => new Set<String>())
|
| .addAll(nativeTags);
|
| @@ -237,9 +236,7 @@ class NativeEmitter {
|
| if (cls.isNative) continue;
|
| Class nativeAncestor = nativeAncestorOf(cls);
|
| if (nativeAncestor != null) {
|
| - map
|
| - .putIfAbsent(nativeAncestor, () => <Class>[])
|
| - .add(cls);
|
| + map.putIfAbsent(nativeAncestor, () => <Class>[]).add(cls);
|
| }
|
| }
|
| return map;
|
| @@ -252,18 +249,15 @@ class NativeEmitter {
|
| field.needsCheckedSetter;
|
| }
|
|
|
| - return
|
| - cls.methods.isEmpty &&
|
| + return cls.methods.isEmpty &&
|
| cls.isChecks.isEmpty &&
|
| cls.callStubs.isEmpty &&
|
| !cls.superclass.isMixinApplication &&
|
| !cls.fields.any(needsAccessor);
|
| }
|
|
|
| - void potentiallyConvertDartClosuresToJs(
|
| - List<jsAst.Statement> statements,
|
| - FunctionElement member,
|
| - List<jsAst.Parameter> stubParameters) {
|
| + void potentiallyConvertDartClosuresToJs(List<jsAst.Statement> statements,
|
| + FunctionElement member, List<jsAst.Parameter> stubParameters) {
|
| FunctionSignature parameters = member.functionSignature;
|
| Element converter = helpers.closureConverter;
|
| jsAst.Expression closureConverter =
|
| @@ -280,9 +274,8 @@ class NativeEmitter {
|
| // typedef(s).
|
| FunctionType functionType = type;
|
| int arity = functionType.computeArity();
|
| - statements.add(
|
| - js.statement('# = #(#, $arity)',
|
| - [name, closureConverter, name]));
|
| + statements.add(js
|
| + .statement('# = #(#, $arity)', [name, closureConverter, name]));
|
| break;
|
| }
|
| }
|
| @@ -320,13 +313,13 @@ class NativeEmitter {
|
|
|
| if (isInterceptedMethod) {
|
| receiver = argumentsBuffer[0];
|
| - arguments = argumentsBuffer.sublist(1,
|
| - indexOfLastOptionalArgumentInParameters + 1);
|
| + arguments = argumentsBuffer.sublist(
|
| + 1, indexOfLastOptionalArgumentInParameters + 1);
|
| } else {
|
| // Native methods that are not intercepted must be static.
|
| assert(invariant(member, member.isStatic));
|
| - arguments = argumentsBuffer.sublist(0,
|
| - indexOfLastOptionalArgumentInParameters + 1);
|
| + arguments = argumentsBuffer.sublist(
|
| + 0, indexOfLastOptionalArgumentInParameters + 1);
|
| if (backend.isJsInterop(member)) {
|
| // fixedBackendPath is allowed to have the form foo.bar.baz for
|
| // interop. This template is uncached to avoid possibly running out of
|
| @@ -334,14 +327,15 @@ class NativeEmitter {
|
| // caching these templates causing an issue is very low as each class
|
| // and library that uses typed JavaScript interop will create only 1
|
| // unique template.
|
| - receiver = js.uncachedExpressionTemplate(
|
| - backend.namer.fixedBackendPath(member)).instantiate([]);
|
| + receiver = js
|
| + .uncachedExpressionTemplate(backend.namer.fixedBackendPath(member))
|
| + .instantiate([]);
|
| } else {
|
| receiver = js('this');
|
| }
|
| }
|
| - statements.add(
|
| - js.statement('return #.#(#)', [receiver, target, arguments]));
|
| + statements
|
| + .add(js.statement('return #.#(#)', [receiver, target, arguments]));
|
|
|
| return statements;
|
| }
|
| @@ -366,4 +360,4 @@ class NativeEmitter {
|
| if (backend.isNativeOrExtendsNative(cls)) return true;
|
| return isSupertypeOfNativeClass(element);
|
| }
|
| -}
|
| +}
|
|
|