.stdin(false)
.generateSourceArchive(!skipSrc)
.encoding(encoding)
.diagnosticListener(diagnosticListener)
.outWriter(writer);
final TypeChecker typeChecker;
if (opts.hasVerboseFlag("cmr")) {
append("Using repositories: "+getRepositoryAsStrings());
newline();
}
final RepositoryManager repoman = getRepositoryManager();
long t0, t1, t2, t3, t4;
final TypeCheckerBuilder tcb;
List<File> onlySources = null;
List<File> onlyResources = null;
if (opts.isStdin()) {
VirtualFile src = new VirtualFile() {
@Override
public boolean isFolder() {
return false;
}
@Override
public String getName() {
return "SCRIPT.ceylon";
}
@Override
public String getPath() {
return getName();
}
@Override
public InputStream getInputStream() {
return System.in;
}
@Override
public List<VirtualFile> getChildren() {
return Collections.emptyList();
}
@Override
public int hashCode() {
return getPath().hashCode();
}
@Override
public boolean equals(Object obj) {
if (obj instanceof VirtualFile) {
return ((VirtualFile) obj).getPath().equals(getPath());
}
else {
return super.equals(obj);
}
}
};
t0 = System.nanoTime();
tcb = new TypeCheckerBuilder()
.addSrcDirectory(src);
} else {
t0=System.nanoTime();
tcb = new TypeCheckerBuilder();
SourceArgumentsResolver resolver = new SourceArgumentsResolver(roots, resources, Constants.CEYLON_SUFFIX, Constants.JS_SUFFIX);
resolver
.cwd(cwd)
.expandAndParse(files);
onlySources = resolver.getSourceFiles();
onlyResources = resolver.getResourceFiles();
if (opts.isVerbose()) {
append("Adding source directories to typechecker:" + roots).newline();
}
for (File root : roots) {
tcb.addSrcDirectory(root);
}
if (!resolver.getSourceModules().isEmpty()) {
tcb.setModuleFilters(resolver.getSourceModules());
}
tcb.statistics(opts.isProfile());
JsModuleManagerFactory.setVerbose(opts.isVerbose());
tcb.moduleManagerFactory(new JsModuleManagerFactory(encoding));
}
//getting the type checker does process all types in the source directory
tcb.verbose(opts.isVerbose()).setRepositoryManager(repoman);
tcb.usageWarnings(false).encoding(encoding);
typeChecker = tcb.getTypeChecker();
if (onlySources != null) {
for (PhasedUnit pu : typeChecker.getPhasedUnits().getPhasedUnits()) {
File unitFile = new File(pu.getUnitFile().getPath());
if (!FileUtil.containsFile(onlySources, unitFile)) {
if (opts.isVerbose()) {
append("Removing phased unit " + pu).newline();
}
typeChecker.getPhasedUnits().removePhasedUnitForRelativePath(pu.getPathRelativeToSrcDir());
}
}
}
t1=System.nanoTime();
typeChecker.process(true);
t2=System.nanoTime();
JsCompiler jsc = new JsCompiler(typeChecker, opts);
if (onlySources != null) {
if (opts.isVerbose()) {