Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(336)

Unified Diff: editor/tools/plugins/com.google.dart.tools.core/src/com/google/dart/tools/core/internal/builder/DartBuilder.java

Issue 10810052: Fix analysis of loose files (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: editor/tools/plugins/com.google.dart.tools.core/src/com/google/dart/tools/core/internal/builder/DartBuilder.java
===================================================================
--- editor/tools/plugins/com.google.dart.tools.core/src/com/google/dart/tools/core/internal/builder/DartBuilder.java (revision 9797)
+++ editor/tools/plugins/com.google.dart.tools.core/src/com/google/dart/tools/core/internal/builder/DartBuilder.java (working copy)
@@ -35,40 +35,74 @@
*/
public class DartBuilder extends IncrementalProjectBuilder {
+ private final AnalysisServer server = SystemLibraryManagerProvider.getDefaultAnalysisServer();
+
@SuppressWarnings("rawtypes")
@Override
protected IProject[] build(int kind, Map args, IProgressMonitor monitor) throws CoreException {
IResourceDelta delta = getDelta(getProject());
- if (delta == null) { // add project
- analyze(getProject(), IResourceDelta.ADDED);
- } else {
+ // If delta is null, then building a new project
- delta.accept(new IResourceDeltaVisitor() {
- @Override
- public boolean visit(IResourceDelta delta) {
- IResource resource = delta.getResource();
- if (resource.getType() != IResource.FILE) {
- switch (delta.getKind()) {
- case IResourceDelta.ADDED:
- case IResourceDelta.REMOVED:
- analyze(resource, delta.getKind());
- return false;
- case IResourceDelta.CHANGED:
- return true;
- }
- return false;
+ if (delta == null) {
+ IPath location = getProject().getLocation();
+ if (location != null) {
+ server.scan(location.toFile(), false);
+ }
+ return null;
+ }
+
+ // Recursively process the resource delta
+
+ delta.accept(new IResourceDeltaVisitor() {
+ @Override
+ public boolean visit(IResourceDelta delta) {
+
+ IResource resource = delta.getResource();
+ IPath location = resource.getLocation();
+ if (location == null) {
+ return false;
+ }
+ File file = location.toFile();
+
+ // Process folder
+
+ if (resource.getType() != IResource.FILE) {
+ switch (delta.getKind()) {
+ case IResourceDelta.ADDED:
+ server.scan(file, false);
+ return false;
+ case IResourceDelta.REMOVED:
+ server.discard(file);
+ return false;
+ case IResourceDelta.CHANGED:
+ // recurse child deltas
+ return true;
}
- String name = resource.getName();
- if (name.endsWith(Extensions.DOT_DART)) {
- analyze(resource, delta.getKind());
+ return false;
+ }
+
+ // Process file
+
+ if (resource.getName().endsWith(Extensions.DOT_DART)) {
+ switch (delta.getKind()) {
+ case IResourceDelta.ADDED:
+ server.scan(file, false);
+ return false;
+ case IResourceDelta.REMOVED:
+ server.discard(file);
+ return false;
+ case IResourceDelta.CHANGED:
+ server.changed(file);
+ return false;
}
return false;
}
- });
- }
+ return false;
+ }
+ });
return null;
}
@@ -78,21 +112,4 @@
AnalysisServer server = SystemLibraryManagerProvider.getDefaultAnalysisServer();
server.reanalyze();
}
-
- private void analyze(IResource resource, int kind) {
- AnalysisServer server = SystemLibraryManagerProvider.getDefaultAnalysisServer();
- IPath location = resource.getLocation();
- if (location == null) {
- return;
- }
- File file = location.toFile();
- server.changed(file);
- if (kind == IResourceDelta.ADDED || kind == IResourceDelta.CHANGED) {
- server.scan(file, false);
- } else if (kind == IResourceDelta.REMOVED) {
- server.discard(file);
- }
-
- }
-
}

Powered by Google App Engine
This is Rietveld 408576698