| package com.google.dart.engine.context; |
| |
| import com.google.dart.engine.ast.CompilationUnit; |
| import com.google.dart.engine.element.CompilationUnitElement; |
| import com.google.dart.engine.element.LibraryElement; |
| import com.google.dart.engine.internal.context.AnalysisOptionsImpl; |
| import com.google.dart.engine.source.FileBasedSource; |
| import com.google.dart.engine.source.Source; |
| |
| import static com.google.dart.engine.utilities.io.FileUtilities2.createFile; |
| |
| /** |
| * Helper for creating and managing single {@link AnalysisContext}. |
| */ |
| public class AnalysisContextHelper { |
| public final AnalysisContext context; |
| |
| /** |
| * Creates new {@link AnalysisContext} using {@link AnalysisContextFactory#contextWithCore()}. |
| */ |
| public AnalysisContextHelper() { |
| context = AnalysisContextFactory.contextWithCore(); |
| AnalysisOptionsImpl options = new AnalysisOptionsImpl(context.getAnalysisOptions()); |
| options.setCacheSize(256); |
| context.setAnalysisOptions(options); |
| } |
| |
| public Source addSource(String path, String code) { |
| Source source = new FileBasedSource(createFile(path)); |
| if (path.endsWith(".dart") || path.endsWith(".html")) { |
| ChangeSet changeSet = new ChangeSet(); |
| changeSet.addedSource(source); |
| context.applyChanges(changeSet); |
| } |
| context.setContents(source, code); |
| return source; |
| } |
| |
| public CompilationUnitElement getDefiningUnitElement(Source source) throws Exception { |
| return context.getCompilationUnitElement(source, source); |
| } |
| |
| public CompilationUnit resolveDefiningUnit(Source source) throws Exception { |
| LibraryElement libraryElement = context.computeLibraryElement(source); |
| return context.resolveCompilationUnit(source, libraryElement); |
| } |
| |
| public void runTasks() { |
| AnalysisResult result = context.performAnalysisTask(); |
| while (result.getChangeNotices() != null) { |
| result = context.performAnalysisTask(); |
| } |
| } |
| } |