use of com.google.devtools.j2objc.util.Parser in project j2objc by google.
the class J2ObjC method createParser.
@VisibleForTesting
public static Parser createParser(Options options) {
Parser parser = Parser.newParser(options);
parser.addClasspathEntries(options.fileUtil().getClassPathEntries());
parser.addClasspathEntries(options.getBootClasspath());
parser.addSourcepathEntries(options.fileUtil().getSourcePathEntries());
parser.setIncludeRunningVMBootclasspath(false);
parser.setEnableDocComments(options.docCommentsEnabled());
return parser;
}
use of com.google.devtools.j2objc.util.Parser in project j2objc by google.
the class TreeShaker method getUnusedCode.
public CodeReferenceMap getUnusedCode(CodeReferenceMap inputRootSet) throws IOException {
Parser parser = createParser(options);
final HashMap<String, ReferenceNode> elementReferenceMap = new HashMap<>();
final Set<String> staticSet = new HashSet<>();
final HashMap<String, Set<String>> overrideMap = new HashMap<>();
List<String> sourceFiles = options.getSourceFiles();
File strippedDir = stripIncompatible(sourceFiles, parser);
Parser.Handler handler = new Parser.Handler() {
@Override
public void handleParsedUnit(String path, CompilationUnit unit) {
if (env == null) {
env = unit.getEnv();
} else {
//TODO(malvania): Assertion fails! Remove this once we're sure all env utils are the same.
//assert(unit.getEnv() == env);
}
new ElementReferenceMapper(unit, elementReferenceMap, staticSet, overrideMap).run();
}
};
parser.parseFiles(sourceFiles, handler, options.sourceVersion());
FileUtil.deleteTempDir(strippedDir);
if (ErrorUtil.errorCount() > 0) {
return null;
}
UnusedCodeTracker tracker = new UnusedCodeTracker(env, elementReferenceMap, staticSet, overrideMap);
tracker.mapOverridingMethods();
tracker.markUsedElements(inputRootSet);
CodeReferenceMap codeMap = tracker.buildTreeShakerMap();
return codeMap;
}
use of com.google.devtools.j2objc.util.Parser in project j2objc by google.
the class TreeShaker method createParser.
private Parser createParser(Options options) throws IOException {
Parser parser = Parser.newParser(j2objcOptions);
parser.addSourcepathEntries(j2objcOptions.fileUtil().getSourcePathEntries());
parser.addClasspathEntries(Strings.nullToEmpty(options.getBootclasspath()));
parser.addClasspathEntries(j2objcOptions.fileUtil().getClassPathEntries());
return parser;
}
use of com.google.devtools.j2objc.util.Parser in project j2objc by google.
the class CycleFinder method createParser.
private Parser createParser() {
Parser parser = Parser.newParser(j2objcOptions);
parser.addSourcepathEntries(Strings.nullToEmpty(options.getSourcepath()));
parser.addClasspathEntries(Strings.nullToEmpty(options.getBootclasspath()));
parser.addClasspathEntries(Strings.nullToEmpty(options.getClasspath()));
return parser;
}
use of com.google.devtools.j2objc.util.Parser in project j2objc by google.
the class CycleFinder method findCycles.
public List<List<Edge>> findCycles() throws IOException {
Parser parser = createParser();
NameList whitelist = NameList.createFromFiles(options.getWhitelistFiles(), options.fileEncoding());
final GraphBuilder graphBuilder = new GraphBuilder(whitelist);
List<String> sourceFiles = options.getSourceFiles();
File strippedDir = stripIncompatible(sourceFiles, parser);
Parser.Handler handler = new Parser.Handler() {
@Override
public void handleParsedUnit(String path, CompilationUnit unit) {
new LambdaTypeElementAdder(unit).run();
new OuterReferenceResolver(unit).run();
graphBuilder.visitAST(unit);
}
};
parser.parseFiles(sourceFiles, handler, options.sourceVersion());
FileUtil.deleteTempDir(strippedDir);
if (ErrorUtil.errorCount() > 0) {
return null;
}
// Construct the graph and find cycles.
ReferenceGraph graph = graphBuilder.constructGraph().getGraph();
for (ReferenceGraph component : graph.getStronglyConnectedComponents(getSeedNodes(graph))) {
handleStronglyConnectedComponent(component);
}
return cycles;
}
Aggregations