@Override public void generate(InjectorContext context, MethodReference methodRef) throws IOException { context.writeExpr(context.getArgument(0)); } }
@Override public void generate(InjectorContext context, MethodReference methodRef) throws IOException { switch (methodRef.getName()) { case "toJava": case "fromJava": context.writeExpr(context.getArgument(0)); break; case "arrayFromJava": context.writeExpr(context.getArgument(0)); context.getWriter().append(".data"); break; } } }
@Override public void generate(InjectorContext context, MethodReference methodRef) throws IOException { switch (methodRef.getName()) { case "asJavaClass": case "classFromResource": case "objectFromResource": case "marshall": case "getPlatformObject": context.writeExpr(context.getArgument(0)); break; case "initClass": context.writeExpr(context.getArgument(0)); context.getWriter().append(".$clinit()"); break; } }
@Override public void emit(InjectorContext context) throws IOException { emit(context.getWriter(), index -> context.writeExpr(context.getArgument(index))); }
@Override public void generate(InjectorContext context, MethodReference methodRef) throws IOException { switch (methodRef.getName()) { case "divideUnsigned": context.getWriter().append("$rt_udiv("); context.writeExpr(context.getArgument(0)); context.getWriter().append(",").ws(); context.writeExpr(context.getArgument(1)); context.getWriter().append(")"); break; case "remainderUnsigned": context.getWriter().append("$rt_umod("); context.writeExpr(context.getArgument(0)); context.getWriter().append(",").ws(); context.writeExpr(context.getArgument(1)); context.getWriter().append(")"); break; } } }
@Override public void generate(InjectorContext context, MethodReference methodRef) throws IOException { switch (methodRef.getName()) { case "getJavaException": context.getWriter().append("$rt_javaException("); context.writeExpr(context.getArgument(0)); context.getWriter().append(")"); break; case "getJSException": context.getWriter().append("$rt_jsException("); context.writeExpr(context.getArgument(0)); context.getWriter().append(")"); break; } } }
@Override public void emit(InjectorContext context) throws IOException { AstWriter astWriter = new AstWriter(context.getWriter()); int paramIndex = 0; if (!isStatic) { int index = paramIndex++; astWriter.declareNameEmitter("this", prec -> context.writeExpr(context.getArgument(index), convert(prec))); } for (int i = 0; i < parameterNames.length; ++i) { int index = paramIndex++; astWriter.declareNameEmitter(parameterNames[i], prec -> context.writeExpr(context.getArgument(index), convert(prec))); } astWriter.hoist(ast); astWriter.print(ast, convert(context.getPrecedence())); }
@Override public void generate(InjectorContext context, MethodReference methodRef) throws IOException { context.getWriter().append("$rt_").append(methodRef.getName()).append("("); context.writeExpr(context.getArgument(0)); context.getWriter().append(")"); } }
case "getProperty": if (methodRef.getDescriptor().parameterType(1) == ValueType.INTEGER) { context.writeExpr(context.getArgument(0)); context.getWriter().append('['); context.writeExpr(context.getArgument(1)); context.getWriter().append(']'); } else { context.writeExpr(context.getArgument(0)); writePropertyAccessor(context, context.getArgument(1)); context.getWriter().append('('); if (methodRef.getDescriptor().parameterType(1) == ValueType.INTEGER) { context.writeExpr(context.getArgument(0)); context.getWriter().append('['); context.writeExpr(context.getArgument(1)); } else { context.writeExpr(context.getArgument(0)); writePropertyAccessor(context, context.getArgument(1)); context.writeExpr(context.getArgument(2)); context.getWriter().append(')'); break; case "add": context.writeExpr(context.getArgument(0)); context.getWriter().append(".push("); context.writeExpr(context.getArgument(1)); context.getWriter().append(')'); break; case "has":
@Override public void generate(InjectorContext context, MethodReference methodRef) throws IOException { switch (methodRef.getName()) { case "newEmptyInstance": context.getWriter().append("new "); context.writeExpr(context.getArgument(0), Precedence.MEMBER_ACCESS); context.getWriter().append('.').appendField(platformClassField); context.getWriter().append("()"); break; } }
switch (methodRef.getName()) { case "arrayData": context.writeExpr(context.getArgument(0)); writer.append(".data"); break; case "get": context.writeExpr(context.getArgument(0), Precedence.MEMBER_ACCESS); renderProperty(context.getArgument(1), context); break; case "set": context.writeExpr(context.getArgument(0), Precedence.ASSIGNMENT.next()); renderProperty(context.getArgument(1), context); writer.ws().append('=').ws(); context.writeExpr(context.getArgument(2), Precedence.ASSIGNMENT.next()); break; case "invoke": context.writeExpr(context.getArgument(0), Precedence.GROUPING); renderProperty(context.getArgument(1), context); writer.append('('); for (int i = 2; i < context.argumentCount(); ++i) { context.writeExpr(context.getArgument(i), Precedence.min()); context.writeExpr(context.getArgument(0), Precedence.GROUPING); renderProperty(context.getArgument(1), context); writer.append("("); for (int i = 2; i < context.argumentCount(); ++i) { context.writeExpr(context.getArgument(i), Precedence.min());
@Override public void generate(InjectorContext context, MethodReference methodRef) throws IOException { context.writeExpr(context.getArgument(0)); } }
@Override public void generate(InjectorContext context, MethodReference methodRef) throws IOException { switch (methodRef.getName()) { case "asJavaClass": case "classFromResource": case "objectFromResource": case "marshall": case "getPlatformObject": context.writeExpr(context.getArgument(0)); break; case "initClass": context.writeExpr(context.getArgument(0)); context.getWriter().append(".$clinit()"); break; } }
@Override public void emit(InjectorContext context) throws IOException { emit(context.getWriter(), index -> context.writeExpr(context.getArgument(index))); }
@Override public void emit(InjectorContext context) throws IOException { AstWriter astWriter = new AstWriter(context.getWriter()); int paramIndex = 0; if (!isStatic) { int index = paramIndex++; astWriter.declareNameEmitter("this", prec -> context.writeExpr(context.getArgument(index), convert(prec))); } for (int i = 0; i < parameterNames.length; ++i) { int index = paramIndex++; astWriter.declareNameEmitter(parameterNames[i], prec -> context.writeExpr(context.getArgument(index), convert(prec))); } astWriter.hoist(ast); astWriter.print(ast, convert(context.getPrecedence())); }
case "getProperty": if (methodRef.getDescriptor().parameterType(1) == ValueType.INTEGER) { context.writeExpr(context.getArgument(0)); context.getWriter().append('['); context.writeExpr(context.getArgument(1)); context.getWriter().append(']'); } else { context.writeExpr(context.getArgument(0)); writePropertyAccessor(context, context.getArgument(1)); context.getWriter().append('('); if (methodRef.getDescriptor().parameterType(1) == ValueType.INTEGER) { context.writeExpr(context.getArgument(0)); context.getWriter().append('['); context.writeExpr(context.getArgument(1)); } else { context.writeExpr(context.getArgument(0)); writePropertyAccessor(context, context.getArgument(1)); context.writeExpr(context.getArgument(2)); context.getWriter().append(')'); break; case "add": context.writeExpr(context.getArgument(0)); context.getWriter().append(".push("); context.writeExpr(context.getArgument(1)); context.getWriter().append(')'); break; case "has":
switch (methodRef.getName()) { case "arrayData": context.writeExpr(context.getArgument(0)); writer.append(".data"); break; case "get": context.writeExpr(context.getArgument(0), Precedence.MEMBER_ACCESS); renderProperty(context.getArgument(1), context); break; case "set": context.writeExpr(context.getArgument(0), Precedence.ASSIGNMENT.next()); renderProperty(context.getArgument(1), context); writer.ws().append('=').ws(); context.writeExpr(context.getArgument(2), Precedence.ASSIGNMENT.next()); break; case "invoke": context.writeExpr(context.getArgument(0), Precedence.GROUPING); renderProperty(context.getArgument(1), context); writer.append('('); for (int i = 2; i < context.argumentCount(); ++i) { context.writeExpr(context.getArgument(i), Precedence.min()); context.writeExpr(context.getArgument(0), Precedence.GROUPING); renderProperty(context.getArgument(1), context); writer.append("("); for (int i = 2; i < context.argumentCount(); ++i) { context.writeExpr(context.getArgument(i), Precedence.min());