@Override public void compile() throws CompilationFailedException { stubCount = 0; super.compile(Phases.CONVERSION); }
/** * Synonym for compile(Phases.ALL). */ public void compile() throws CompilationFailedException { compile(Phases.ALL); }
public void compile(String[] paths) throws Exception { unit.addSources(paths); unit.compile(); }
public void compile(File[] files) throws Exception { unit.addSources(files); unit.compile(); }
/** * Compiles a single File. */ public void compile( File file ) throws CompilationFailedException { CompilationUnit unit = new CompilationUnit( configuration ); unit.addSource( file ); unit.compile(); }
/** * Compiles a series of Files from file names. */ public void compile( String[] files ) throws CompilationFailedException { CompilationUnit unit = new CompilationUnit( configuration ); unit.addSources( files ); unit.compile(); }
/** * Compiles a series of Files. */ public void compile( File[] files ) throws CompilationFailedException { CompilationUnit unit = new CompilationUnit( configuration ); unit.addSources( files ); unit.compile(); }
unit.setClassgenCallback(search); unit.addSource(url); unit.compile(Phases.CLASS_GENERATION);
/** * Compiles a string of code. */ public void compile( String name, String code ) throws CompilationFailedException { CompilationUnit unit = new CompilationUnit( configuration ); unit.addSource( new SourceUnit(name, code, configuration, unit.getClassLoader(), unit.getErrorCollector()) ); unit.compile(); }
/** * Loads the given class node returning the implementation Class. * <p> * WARNING: this compilation is not synchronized * * @param classNode * @return a class */ public Class defineClass(ClassNode classNode, String file, String newCodeBase) { CodeSource codeSource = null; try { codeSource = new CodeSource(new URL("file", "", newCodeBase), (java.security.cert.Certificate[]) null); } catch (MalformedURLException e) { //swallow } CompilationUnit unit = createCompilationUnit(config, codeSource); ClassCollector collector = createCollector(unit, classNode.getModule().getContext()); try { unit.addClassNode(classNode); unit.setClassgenCallback(collector); unit.compile(Phases.CLASS_GENERATION); definePackageInternal(collector.generatedClass.getName()); return collector.generatedClass; } catch (CompilationFailedException e) { throw new RuntimeException(e); } }
public long execute() throws Exception { ClassLoader cl = new URLClassLoader(classpath, ClassLoader.getSystemClassLoader().getParent()); GroovyClassLoader gcl = new GroovyClassLoader(cl); CompilationUnit cu = new CompilationUnit(new CompilerConfiguration(), null, gcl, new GroovyClassLoader(this.getClass().getClassLoader())); for (File source : sources) { cu.addSource(source); } long sd = System.nanoTime(); cu.compile(CompilePhase.CLASS_GENERATION.getPhaseNumber()); long dur = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - sd); return dur; } }
/** * A helper method that can be used to evaluate expressions as found in annotation * parameters. For example, it will evaluate a constant, be it referenced directly as * an integer or as a reference to a field. * <p> * If this method throws an exception, then the expression cannot be evaluated on its own. * * @param expr the expression to be evaluated * @param config the compiler configuration * @return the result of the expression */ public static Object evaluateExpression(Expression expr, CompilerConfiguration config) { String className = "Expression$" + UUID.randomUUID().toString().replace('-', '$'); ClassNode node = new ClassNode(className, Opcodes.ACC_PUBLIC, OBJECT_TYPE); ReturnStatement code = new ReturnStatement(expr); addGeneratedMethod(node, "eval", Opcodes.ACC_PUBLIC + Opcodes.ACC_STATIC, OBJECT_TYPE, Parameter.EMPTY_ARRAY, ClassNode.EMPTY_ARRAY, code); CompilerConfiguration copyConf = new CompilerConfiguration(config); CompilationUnit cu = new CompilationUnit(copyConf); cu.addClassNode(node); cu.compile(Phases.CLASS_GENERATION); @SuppressWarnings("unchecked") List<GroovyClass> classes = (List<GroovyClass>) cu.getClasses(); Class aClass = cu.getClassLoader().defineClass(className, classes.get(0).getBytes()); try { return aClass.getMethod("eval").invoke(null); } catch (IllegalAccessException | NoSuchMethodException | InvocationTargetException e) { throw new GroovyBugError(e); } }
SourceUnit su = new SourceUnit(name + "wrapper", "", config, loader, new ErrorCollector(config)); cu.addSource(su); cu.compile(Phases.CONVERSION); su.getAST().addClass(cn); cu.compile(Phases.CLASS_GENERATION); @SuppressWarnings("unchecked") List<GroovyClass> classes = (List<GroovyClass>) cu.getClasses();
public ModuleNode getAST(String source, int untilPhase) { SourceUnit unit = SourceUnit.create("Test", source); CompilationUnit compUnit = new CompilationUnit(); compUnit.addSource(unit); compUnit.compile(untilPhase); return unit.getAST(); }
public void testTransitiveDep(){ cu.addSource("testTransitiveDep.gtest", new StringBufferInputStream( "class A1 {}\n" + "class A2 extends A1{}\n" + "class A3 extends A2{}\n" )); cu.compile(Phases.CLASS_GENERATION); cache.makeTransitiveHull(); Set<String> dep = cache.get("A1"); assertEquals(dep.size(),1); dep = cache.get("A2"); assertEquals(dep.size(),2); assertTrue(dep.contains("A1")); dep = cache.get("A3"); assertEquals(dep.size(),3); assertTrue(dep.contains("A1")); assertTrue(dep.contains("A2")); }
public void testDep(){ cu.addSource("testDep.gtest", new StringBufferInputStream( "class C1 {}\n" + "class C2 {}\n" + "class C3 {}\n" + "class A1 {C1 x}\n" + "class A2 extends C2{}\n" + "class A3 {C1 foo(C2 x){new C3()}}\n" )); cu.compile(Phases.CLASS_GENERATION); assertEquals(cache.get("C1").size(),1); assertEquals(cache.get("C2").size(),1); assertEquals(cache.get("C3").size(),1); Set<String> dep = cache.get("A1"); assertEquals(dep.size(),2); assertTrue(dep.contains("C1")); dep = cache.get("A2"); assertEquals(dep.size(),2); assertTrue(dep.contains("C2")); dep = cache.get("A3"); assertEquals(dep.size(),4); assertTrue(dep.contains("C1")); assertTrue(dep.contains("C2")); assertTrue(dep.contains("C3")); }
log.info("Compiling " + count + " source file" + (count > 1 ? "s" : "") + " to " + destdir); compilation.compile();
int goalPhase = Phases.CLASS_GENERATION; if (config != null && config.getTargetDirectory() != null) goalPhase = Phases.OUTPUT; unit.compile(goalPhase);
cu.addSource(name, script); try { cu.compile(Phases.CONVERSION);
/** * Compiles a single File. */ public void compile( File file ) throws CompilationFailedException { CompilationUnit unit = new CompilationUnit( configuration ); unit.addSource( file ); unit.compile(); }