Chromium Code Reviews| Index: lib/src/compiler/code_generator.dart |
| diff --git a/lib/src/compiler/code_generator.dart b/lib/src/compiler/code_generator.dart |
| index d07bfb06619611d3aa7cb7238e7f19185343f0e9..59cdcca190368a0a0bc51a0879762df44e8f1b24 100644 |
| --- a/lib/src/compiler/code_generator.dart |
| +++ b/lib/src/compiler/code_generator.dart |
| @@ -2325,6 +2325,13 @@ class CodeGenerator extends GeneralizingAstVisitor |
| } |
| JS.PropertyAccess _emitTopLevelName(Element e, {String suffix: ''}) { |
| + if (e is TopLevelVariableElement && |
| + e.getter != null && |
| + findAnnotation(e.getter, isPublicJSAnnotation) != null) { |
| + var annotationName = getAnnotationName(e.getter, isPublicJSAnnotation); |
| + var name = js.string(annotationName ?? e.name); |
| + return new JS.PropertyAccess(new JS.Identifier('self'), name); |
|
Jennifer Messerly
2016/05/13 23:19:17
Where is "self" coming from?
Harry Terkelsen
2016/05/13 23:34:43
hmm, I've mostly been doing it because dart2js use
Jennifer Messerly
2016/05/13 23:51:07
Hmmmmm ... I don't think we have a reliable way to
Harry Terkelsen
2016/05/16 16:18:13
Done.
|
| + } |
| String name = getJSExportName(e) + suffix; |
| return new JS.PropertyAccess( |
| emitLibraryName(e.library), _propertyName(name)); |
| @@ -2538,17 +2545,21 @@ class CodeGenerator extends GeneralizingAstVisitor |
| return js.call('dart.#(#, #)', [name, jsTarget, args]); |
| } |
| - jsTarget = new JS.PropertyAccess(jsTarget, memberName); |
| - |
| - if (typeArgs != null) jsTarget = new JS.Call(jsTarget, typeArgs); |
| - |
| if (DynamicInvoke.get(node.methodName)) { |
| // This is a dynamic call to a statically known target. For example: |
| // class Foo { Function bar; } |
| // new Foo().bar(); // dynamic call |
| - return js.call('dart.dcall(#, #)', [jsTarget, args]); |
| + if (typeArgs != null) { |
|
Jennifer Messerly
2016/05/13 23:19:16
just curious about the reason for this change?
Ov
Harry Terkelsen
2016/05/13 23:34:43
Basically because of this line: https://github.com
Jennifer Messerly
2016/05/13 23:51:06
Thanks, makes sense :)
|
| + return js.call('dart.dgsend(#, #, #, #)', |
|
Jennifer Messerly
2016/05/13 23:19:17
this code looks copy+pasted, can we share it with
Harry Terkelsen
2016/05/13 23:34:43
I merged it with the above
Jennifer Messerly
2016/05/13 23:51:06
Looks great :)
|
| + [jsTarget, new JS.ArrayInitializer(typeArgs), memberName, args]); |
| + } else { |
| + return js.call('dart.dsend(#, #, #)', [jsTarget, memberName, args]); |
| + } |
| } |
| + jsTarget = new JS.PropertyAccess(jsTarget, memberName); |
| + if (typeArgs != null) jsTarget = new JS.Call(jsTarget, typeArgs); |
| + |
| return new JS.Call(jsTarget, args); |
| } |