use of org.eclipse.ceylon.compiler.js.loader.JsModuleManagerFactory in project ceylon by eclipse.
the class MainForJsTest method main.
public static void main(String[] args) throws Exception {
String distRepo = "../dist/dist/repo";
final Options opts = new Options().addRepo(distRepo).outRepo("build/test/proto");
System.out.println("Typechecking Ceylon test code...");
JsModuleManagerFactory.setVerbose(true);
TypeCheckerBuilder tcb = new TypeCheckerBuilder().verbose(false).moduleManagerFactory(new JsModuleManagerFactory(null)).usageWarnings(false);
final ArrayList<File> excludes = new ArrayList<>();
final ArrayList<File> resfiles = new ArrayList<>();
final ArrayList<File> resdirs = new ArrayList<>();
for (String dir : args) {
final File d = new File(dir.charAt(1) == ':' ? dir.substring(2) : dir);
if (dir.startsWith("X:")) {
excludes.add(d);
} else if (dir.startsWith("R:")) {
resdirs.add(d);
} else if (dir.startsWith("r:")) {
resfiles.add(d);
} else if (dir.startsWith("c:")) {
opts.cwd(d);
} else {
tcb.addSrcDirectory(d);
opts.addSrcDir(d);
}
}
final RepositoryManager repoman = CeylonUtils.repoManager().cwd(opts.getCwd()).systemRepo(opts.getSystemRepo()).userRepos(opts.getRepos()).outRepo(opts.getOutRepo()).buildManager();
tcb.setRepositoryManager(repoman);
final TypeChecker typeChecker = tcb.getTypeChecker();
for (File x : excludes) {
String ap = x.getPath();
// Fix for Windows
if ('/' != File.separatorChar) {
ap = ap.replace(File.separatorChar, '/');
}
for (PhasedUnit pu : typeChecker.getPhasedUnits().getPhasedUnits()) {
if (pu.getUnit().getFullPath().startsWith(ap)) {
typeChecker.getPhasedUnits().removePhasedUnitForRelativePath(pu.getPathRelativeToSrcDir());
}
}
}
TypeCache.doWithoutCaching(new Runnable() {
@Override
public void run() {
typeChecker.process();
}
});
if (typeChecker.getErrors() > 0) {
System.exit(1);
}
System.out.println("Compiling in prototype style");
opts.resourceDirs(resdirs);
JsCompiler jsc = new JsCompiler(typeChecker, opts).stopOnErrors(true);
ArrayList<File> sources = new ArrayList<>();
for (String dir : args) {
// The arg is src/test/ceylon for example
addFilesToList(new File(dir), sources);
}
Collections.sort(sources);
jsc.setSourceFiles(sources);
jsc.setResourceFiles(resfiles);
PrintWriter writer = new PrintWriter(System.out);
if (!jsc.generate()) {
jsc.printErrorsAndCount(writer);
}
}
use of org.eclipse.ceylon.compiler.js.loader.JsModuleManagerFactory in project ceylon by eclipse.
the class TestModuleManager method loadJsModel.
private static void loadJsModel() {
if (jstc == null) {
System.out.println("Pass 2: Loading model from JS");
final RepositoryManager repoman = CeylonUtils.repoManager().cwd(options.getCwd()).systemRepo(options.getSystemRepo()).userRepos(options.getRepos()).outRepo(options.getOutRepo()).buildManager();
// .verbose(true);
TypeCheckerBuilder tcb = new TypeCheckerBuilder().usageWarnings(false);
tcb.moduleManagerFactory(new JsModuleManagerFactory((String) null));
tcb.addSrcDirectory(new java.io.File("src/test/resources/loader/pass2"));
tcb.setRepositoryManager(repoman);
jstc = tcb.getTypeChecker();
jstc.process();
}
}
use of org.eclipse.ceylon.compiler.js.loader.JsModuleManagerFactory in project ceylon by eclipse.
the class CompileSomething method main.
public static void main(String[] x) throws IOException {
final Options opts = new Options().outRepo("/tmp/modules").addRepo("compiler-js/build/runtime").addRepo("../ceylon.ast/modules").addRepo("../ceylon-sdk/modules").addRepo("compiler-js/build/test/proto").addRepo("npm:").optimize(true).verbose("all").generateSourceArchive(false).suppressWarnings(EnumUtil.enumsFromStrings(Warning.class, Arrays.asList("unusedImport"))).addSrcDir("/tmp/source");
final TypeCheckerBuilder tcb = new TypeCheckerBuilder().statistics(false).encoding("UTF-8");
for (File sd : opts.getSrcDirs()) {
tcb.addSrcDirectory(sd);
}
final RepositoryManager repoman = CeylonUtils.repoManager().systemRepo(opts.getSystemRepo()).userRepos(opts.getRepos()).outRepo(opts.getOutRepo()).buildManager();
tcb.setRepositoryManager(repoman);
JsModuleManagerFactory.setVerbose(true);
tcb.moduleManagerFactory(new JsModuleManagerFactory("UTF-8"));
final TypeChecker tc = tcb.getTypeChecker();
TypeCache.setEnabled(false);
tc.process(true);
TypeCache.setEnabled(true);
final JsCompiler jsc = new JsCompiler(tc, opts);
ArrayList<File> individualSources = new ArrayList<>();
for (File srcdir : opts.getSrcDirs()) {
for (File sd : srcdir.listFiles()) {
if (sd.isFile() && sd.getName().endsWith(".js") || !individualSources.isEmpty()) {
System.out.println("Especificando archivos para incluir fuentes js");
individualSources.addAll(Arrays.asList(srcdir.listFiles()));
break;
}
}
}
if (!individualSources.isEmpty()) {
jsc.setSourceFiles(individualSources);
}
jsc.stopOnErrors(true);
boolean ok = jsc.generate();
jsc.printErrors(new java.io.PrintWriter(System.out));
if (ok) {
System.out.println("OK");
} else {
System.out.println("EXIT CODE: " + jsc.getExitCode());
}
}
use of org.eclipse.ceylon.compiler.js.loader.JsModuleManagerFactory in project ceylon by eclipse.
the class TestMultipackages method test.
@Test
public void test() throws IOException {
// Compile module with 2 packages
System.out.println("Compiling usemulti");
TypeCheckerBuilder tcb = new TypeCheckerBuilder().usageWarnings(false);
tcb.moduleManagerFactory(new JsModuleManagerFactory("UTF-8"));
tcb.addSrcDirectory(new java.io.File("src/test/resources/multi/pass2"));
tcb.setRepositoryManager(repoman);
TypeChecker tc = tcb.getTypeChecker();
tc.process();
Options options = new Options().addRepo("build/test/test_modules").outRepo("build/test/test_modules").addSrcDir("src/test/resources/multi/pass2").verbose("");
JsCompiler compiler = new JsCompiler(tc, options);
compiler.stopOnErrors(false);
compiler.generate();
}
use of org.eclipse.ceylon.compiler.js.loader.JsModuleManagerFactory in project ceylon by eclipse.
the class TestSiteVariance method typeChecker.
private TypeChecker typeChecker(Options opts) {
final RepositoryManager repoman = CeylonUtils.repoManager().userRepos(opts.getRepos()).outRepo(opts.getOutRepo()).buildManager();
final TypeCheckerBuilder builder = new TypeCheckerBuilder().moduleManagerFactory(new JsModuleManagerFactory("UTF-8"));
for (File sd : opts.getSrcDirs()) {
builder.addSrcDirectory(sd);
}
builder.setRepositoryManager(repoman);
final TypeChecker tc = builder.getTypeChecker();
JsModuleManagerFactory.setVerbose(true);
tc.process();
return tc;
}
Aggregations