I think it's a great start Yishay. But I'd suggest you look for other areas
of the compiler code where there is a generation of Language.closure
output. This should do the same thing I think, but be consistent.


On Mon, Apr 6, 2020 at 8:51 AM <[email protected]> wrote:

> This is an automated email from the ASF dual-hosted git repository.
>
> yishayw pushed a commit to branch issue_143
> in repository https://gitbox.apache.org/repos/asf/royale-compiler.git
>
> commit 634cb4f3362c75317538ba0daedafd19742d00df
> Author: DESKTOP-RH4S838\Yishay <[email protected]>
> AuthorDate: Sun Apr 5 23:48:11 2020 +0300
>
>     Works on given test case. Hope I didn't break anything.
>
>     Reference #143
> ---
>  .../royale/compiler/internal/codegen/js/JSEmitter.java    | 15
> ++++++++++++++-
>  1 file changed, 14 insertions(+), 1 deletion(-)
>
> diff --git
> a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/JSEmitter.java
> b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/JSEmitter.java
> index d24adca..24c65f3 100644
> ---
> a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/JSEmitter.java
> +++
> b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/JSEmitter.java
> @@ -40,6 +40,7 @@ import
> org.apache.royale.compiler.definitions.metadata.IMetaTag;
>  import org.apache.royale.compiler.definitions.metadata.IMetaTagAttribute;
>  import org.apache.royale.compiler.internal.codegen.as.ASEmitter;
>  import org.apache.royale.compiler.internal.codegen.as.ASEmitterTokens;
> +import
> org.apache.royale.compiler.internal.codegen.js.goog.JSGoogEmitterTokens;
>  import
> org.apache.royale.compiler.internal.codegen.js.jx.BlockCloseEmitter;
>  import org.apache.royale.compiler.internal.codegen.js.jx.BlockOpenEmitter;
>  import org.apache.royale.compiler.internal.codegen.js.jx.CatchEmitter;
> @@ -914,7 +915,19 @@ public class JSEmitter extends ASEmitter implements
> IJSEmitter
>                 {
>                         write(coercionStart);
>          }
> -        emitAssignedValue(assignedNode);
> +               if
> (project.getBuiltinType(BuiltinType.FUNCTION).equals(definition) &&
> +                               assignedNode instanceof
> MemberAccessExpressionNode) {
> +                       write(JSGoogEmitterTokens.GOOG_BIND.getToken() +
> +
>  ASEmitterTokens.PAREN_OPEN.getToken()
> +                       );
> +                       emitAssignedValue(assignedNode);
> +                       write(ASEmitterTokens.COMMA.getToken());
> +                       MemberAccessExpressionNode maenode =
> (MemberAccessExpressionNode)assignedNode;
> +                       getWalker().walk(maenode.getLeftOperandNode());
> +                       write(ASEmitterTokens.PAREN_CLOSE.getToken());
> +               } else {
> +                       emitAssignedValue(assignedNode);
> +               }
>                 if (coercionStart != null)
>                 {
>                         if (coercionEnd != null)
>
>

Reply via email to