boolean useJava5 = CompilerConfiguration.isPostJDK5(configuration.getTargetBytecode()); String encoding = configuration.getSourceEncoding(); stubGenerator = new JavaStubGenerator(generationGoal, false, useJava5, encoding); keepStubs = Boolean.TRUE.equals(options.get("keepStubs"));
@Override public void call(final SourceUnit source, final GeneratorContext context, final ClassNode node) throws CompilationFailedException { try { stubGenerator.generateClass(node); stubCount++; } catch (FileNotFoundException e) { source.addException(e); } } }, Phases.CONVERSION);
public void gotoPhase(int phase) throws CompilationFailedException { super.gotoPhase(phase); // compile Java and clean up if (phase == Phases.SEMANTIC_ANALYSIS && !javaSources.isEmpty()) { for (ModuleNode module : getAST().getModules()) { module.setImportsResolved(false); } try { JavaCompiler compiler = compilerFactory.createCompiler(getConfiguration()); compiler.compile(javaSources, this); } finally { if (!keepStubs) stubGenerator.clean(); javaSources.clear(); } } }
private void printConstructor(PrintWriter out, ClassNode clazz, ConstructorNode constructorNode) { printAnnotations(out, constructorNode); // printModifiers(out, constructorNode.getModifiers()); out.print("public "); // temporary hack String className = clazz.getNameWithoutPackage(); if (clazz instanceof InnerClassNode) className = className.substring(className.lastIndexOf("$") + 1); out.println(className); printParams(out, constructorNode); ConstructorCallExpression constrCall = getConstructorCallExpression(constructorNode); if (constrCall == null || !constrCall.isSpecialCall()) { out.println(" {}"); } else { out.println(" {"); printSpecialConstructorArgs(out, constructorNode, constrCall); out.println("}"); } }
mkdirs(outputPath, fileName); toCompile.add(fileName); printImports(out, classNode); printClassContents(out, classNode);
Parameter[] params = selectAccessibleConstructorFromSuper(node); if (params != null) { out.print("super ("); printDefaultValue(out, params[i].getType()); if (i + 1 < params.length) { out.print(", "); ClassNode type = getConstructorArgumentType(arg, node); printDefaultValue(out, type);
mkdirs(outputPath,fileName); toCompile.add(fileName); genImports(classNode, out); printModifiers(out, classNode.getModifiers() & ~(isInterface ? Opcodes.ACC_ABSTRACT : 0)); writeGenericsBounds(out, classNode, true); printType(superClass,out); printType(interfaces[i], out); out.print(","); printType(interfaces[interfaces.length - 1],out); genFields(classNode, out, isEnum); genMethods(classNode, out, isEnum);
private void genMethod(ClassNode clazz, MethodNode methodNode, PrintWriter out) { if (methodNode.getName().equals("<clinit>")) return; if (!clazz.isInterface()) printModifiers(out, methodNode.getModifiers()); writeGenericsBounds(out, methodNode.getGenericsTypes()); out.print(" "); printType(methodNode.getReturnType(), out); out.print(" "); out.print(methodNode.getName()); printParams(methodNode, out); ClassNode[] exceptions = methodNode.getExceptions(); for (int i=0; i<exceptions.length; i++) { ClassNode exception = exceptions[i]; if (i==0) { out.print("throws "); } else { out.print(", "); } printType(exception,out); } if ((methodNode.getModifiers() & Opcodes.ACC_ABSTRACT) != 0) { out.println(";"); } else { out.print(" { "); ClassNode retType = methodNode.getReturnType(); printReturn(out, retType); out.println("}"); } }
printAnnotations(out, methodNode); if (!isInterfaceOrTrait(clazz)) { int modifiers = methodNode.getModifiers(); if (isDefaultTraitImpl(methodNode)) { modifiers ^= Opcodes.ACC_ABSTRACT; printModifiers(out, modifiers & ~(clazz.isEnum() ? Opcodes.ACC_ABSTRACT : 0)); printGenericsBounds(out, methodNode.getGenericsTypes()); out.print(" "); printType(out, methodNode.getReturnType()); out.print(" "); out.print(methodNode.getName()); printParams(out, methodNode); printType(out, exception); } else if (isAbstract(methodNode) && !clazz.isEnum()) { if (clazz.isAnnotationDefinition() && methodNode.hasAnnotationDefault()) { Statement fs = methodNode.getFirstStatement(); if (first) first = false; else out.print(", "); printValue(out, expression, classReturn); printValue(out, re, classReturn); out.print(" { ");
boolean isInterface = isInterfaceOrTrait(classNode); boolean isEnum = classNode.isEnum(); boolean isAnnotationDefinition = classNode.isAnnotationDefinition(); printAnnotations(out, classNode); printModifiers(out, classNode.getModifiers() & ~(isInterface ? Opcodes.ACC_ABSTRACT : 0) & ~(isEnum ? Opcodes.ACC_FINAL | Opcodes.ACC_ABSTRACT : 0)); className = className.substring(className.lastIndexOf("$") + 1); out.println(className); printGenericsBounds(out, classNode, true); printType(out, superClass); printType(out, interfaces[i]); out.print(","); printType(out, interfaces[interfaces.length - 1]); printFields(out, classNode); printMethods(out, classNode, isEnum); propertyMethodsWithSigs.clear(); constructors.clear(); printClassContents(out, inner.next());
if (methodNode.isSynthetic() && methodNode.getName().equals("$getStaticMetaClass")) return; printAnnotations(out, methodNode); if (!clazz.isInterface()) printModifiers(out, methodNode.getModifiers()); printGenericsBounds(out, methodNode.getGenericsTypes()); out.print(" "); printType(out, methodNode.getReturnType()); out.print(" "); out.print(methodNode.getName()); printParams(out, methodNode); out.print(", "); printType(out, exception); out.print(" { "); ClassNode retType = methodNode.getReturnType(); printReturn(out, retType); out.println("}");
private void genConstructor(ClassNode clazz, ConstructorNode constructorNode, PrintWriter out) { // printModifiers(out, constructorNode.getModifiers()); out.print("public "); // temporary hack out.print(clazz.getNameWithoutPackage()); printParams(constructorNode, out); ConstructorCallExpression constrCall = getConstructorCallExpression(constructorNode); if (constrCall == null || !constrCall.isSpecialCall()) { out.println(" {}"); } else { out.println(" {"); genSpecialConstructorArgs(out, constructorNode, constrCall); out.println("}"); } }
private void genField(FieldNode fieldNode, PrintWriter out) { if ((fieldNode.getModifiers()&Opcodes.ACC_PRIVATE)!=0) return; printModifiers(out, fieldNode.getModifiers()); printType(fieldNode.getType(), out); out.print(" "); out.print(fieldNode.getName()); out.println(";"); }
private void printField(PrintWriter out, FieldNode fieldNode, boolean isInterface) { if ((fieldNode.getModifiers() & Opcodes.ACC_PRIVATE) != 0) return; printAnnotations(out, fieldNode); if (!isInterface) { printModifiers(out, fieldNode.getModifiers()); printType(out, type); out.print(formatString(valueExpr.getText())); } else if (ClassHelper.char_TYPE.equals(valueExpr.getType())) { out.print("'"+valueExpr.getText()+"'"); ClassNode constantType = valueExpr.getType(); out.print('('); printType(out, type); out.print(") "); out.print(valueExpr.getText());
private void printField(PrintWriter out, FieldNode fieldNode, boolean isInterface) { if ((fieldNode.getModifiers() & Opcodes.ACC_PRIVATE) != 0) return; printAnnotations(out, fieldNode); if (!isInterface) { printModifiers(out, fieldNode.getModifiers()); printType(out, type); out.print("\"" + escapeSpecialChars(valueExpr.getText()) + "\""); } else if (ClassHelper.char_TYPE.equals(valueExpr.getType())) { out.print("'"+valueExpr.getText()+"'"); ClassNode constantType = valueExpr.getType(); out.print('('); printType(out, type); out.print(") "); out.print(valueExpr.getText());
private void printReturn(PrintWriter out, ClassNode retType) { String retName = retType.getName(); if (!retName.equals("void")) { out.print("return "); printDefaultValue(out, retType); out.print(";"); } }
mkdirs(outputPath,fileName); toCompile.add(fileName); genImports(classNode, out); printModifiers(out, classNode.getModifiers() & ~(isInterface ? Opcodes.ACC_ABSTRACT : 0)); writeGenericsBounds(out, classNode, true); printType(superClass,out); printType(interfaces[i], out); out.print(","); printType(interfaces[interfaces.length - 1],out); genFields(classNode, out, isEnum); genMethods(classNode, out, isEnum);
private void genMethod(ClassNode clazz, MethodNode methodNode, PrintWriter out) { if (methodNode.getName().equals("<clinit>")) return; if (!clazz.isInterface()) printModifiers(out, methodNode.getModifiers()); writeGenericsBounds(out, methodNode.getGenericsTypes()); out.print(" "); printType(methodNode.getReturnType(), out); out.print(" "); out.print(methodNode.getName()); printParams(methodNode, out); ClassNode[] exceptions = methodNode.getExceptions(); for (int i=0; i<exceptions.length; i++) { ClassNode exception = exceptions[i]; if (i==0) { out.print("throws "); } else { out.print(", "); } printType(exception,out); } if ((methodNode.getModifiers() & Opcodes.ACC_ABSTRACT) != 0) { out.println(";"); } else { out.print(" { "); ClassNode retType = methodNode.getReturnType(); printReturn(out, retType); out.println("}"); } }
Parameter[] params = selectAccessibleConstructorFromSuper(node); if (params != null) { out.print("super ("); printDefaultValue(out, params[i].getType()); if (i + 1 < params.length) { out.print(", "); ClassNode type = getConstructorArgumentType(arg, node); printDefaultValue(out, type);
boolean isEnum = (classNode.getModifiers() & Opcodes.ACC_ENUM) != 0; boolean isAnnotationDefinition = classNode.isAnnotationDefinition(); printAnnotations(out, classNode); printModifiers(out, classNode.getModifiers() & ~(isInterface ? Opcodes.ACC_ABSTRACT : 0) & ~(isEnum ? Opcodes.ACC_FINAL : 0)); className = className.substring(className.lastIndexOf("$") + 1); out.println(className); printGenericsBounds(out, classNode, true); printType(out, superClass); printType(out, interfaces[i]); out.print(","); printType(out, interfaces[interfaces.length - 1]); printFields(out, classNode); printMethods(out, classNode, isEnum); propertyMethodsWithSigs.clear(); constructors.clear(); printClassContents(out, inner.next());