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

Unified Diff: editor/tools/plugins/com.google.dart.tools.core/src/com/google/dart/tools/core/internal/model/delta/DeltaProcessor.java

Issue 8387002: Fix for the DeltaProcessing event when a user changes a library name, inside of a #library(..). I... (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: '' Created 9 years, 2 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/model/delta/DeltaProcessor.java
===================================================================
--- editor/tools/plugins/com.google.dart.tools.core/src/com/google/dart/tools/core/internal/model/delta/DeltaProcessor.java (revision 651)
+++ editor/tools/plugins/com.google.dart.tools.core/src/com/google/dart/tools/core/internal/model/delta/DeltaProcessor.java (working copy)
@@ -22,6 +22,7 @@
import com.google.dart.compiler.UrlLibrarySource;
import com.google.dart.compiler.ast.DartDirective;
import com.google.dart.compiler.ast.DartImportDirective;
+import com.google.dart.compiler.ast.DartLibraryDirective;
import com.google.dart.compiler.ast.DartResourceDirective;
import com.google.dart.compiler.ast.DartSourceDirective;
import com.google.dart.compiler.ast.DartUnit;
@@ -439,7 +440,7 @@
librarySource = new UrlLibrarySource(iFile.getLocationURI(),
SystemLibraryManagerProvider.getSystemLibraryManager());
dartSource = new UrlDartSource(libFile, librarySource);
- newCachedDirectives = getCachedDirectives(dartSource);
+ newCachedDirectives = getCachedDirectives(dartSource, library);
}
contentChanged_fileDirectives(DirectiveType.SRC, oldCachedDirectives.getSources(),
@@ -450,6 +451,9 @@
contentChanged_importDirectives(oldCachedDirectives.getImports(),
newCachedDirectives.getImports(), library, librarySource);
+
+ contentChanged_libraryNameDirective(oldCachedDirectives.getLibraryName(),
+ newCachedDirectives.getLibraryName(), library, librarySource);
}
}
// else, no non-compilation unit resource changes can affect the model
@@ -633,6 +637,24 @@
}
}
+ private void contentChanged_libraryNameDirective(String oldLibraryName, String newLibraryName,
+ DartLibraryImpl library, LibrarySource librarySource) {
+ // if we could not compute one of the two library names, return
+ // or if the sets are equal, also return
+ if (oldLibraryName == null || newLibraryName == null || oldLibraryName.equals(newLibraryName)) {
+ return;
+ }
+ // else, !oldLibraryName.equals(newLibraryName)
+ DartLibraryInfo libraryInfo;
+ try {
+ libraryInfo = (DartLibraryInfo) library.getElementInfo();
+ libraryInfo.setName(newLibraryName);
+ currentDelta().changed(library, DartElementDelta.CHANGED);
+ } catch (DartModelException e) {
+ DartCore.logError(e);
+ }
+ }
+
/**
* Called by {@link #updateCurrentDelta(IResourceDelta, int)}, the {@link DartElement} generated
* by this method is used when the creating the {@link DartElementDelta} elements.
@@ -942,6 +964,7 @@
return new CachedDirectives();
}
+ String libraryName = library.getDisplayName();
Set<String> importsSet = new HashSet<String>(libraries.length);
Set<String> sourcesSet = new HashSet<String>(compilationUnits.length + 1);
Set<String> resourceSet = new HashSet<String>(dartResources.length);
@@ -969,7 +992,7 @@
}
}
- return new CachedDirectives(importsSet, sourcesSet, resourceSet);
+ return new CachedDirectives(libraryName, importsSet, sourcesSet, resourceSet);
} catch (DartModelException e) {
DartCore.logError(
"Exception while attempting to compute the CachedDiectives using some DartLibrary object.",
@@ -988,7 +1011,8 @@
* <p>
* <code>null</code> can be returned if the the set couldn't be computed.
*/
- private CachedDirectives getCachedDirectives(DartSource dartSrc) {
+ private CachedDirectives getCachedDirectives(DartSource dartSrc, DartLibraryImpl library) {
+ String libraryName = null;
Set<String> importsSet = new HashSet<String>();
Set<String> sourcesSet = new HashSet<String>();
Set<String> resourcesSet = new HashSet<String>();
@@ -997,6 +1021,13 @@
// we should have one method instead of two.
CachedDirectives literalCachedDirectives = parseDirectives(dartSrc);
LibrarySource librarySrc = dartSrc.getLibrary();
+ // LIBRARY NAME
+ libraryName = literalCachedDirectives.getLibraryName();
+ if (libraryName == null || libraryName.length() == 0) {
+ // if there is no #library(..) directive, then use the implicit name, computed in the same
+ // way from DartLibraryImpl#getDisplayName()
+ libraryName = library.getImplicitLibraryName();
+ }
// IMPORTS
Set<String> importUriSpecs = literalCachedDirectives.getImports();
for (String importText : importUriSpecs) {
@@ -1038,7 +1069,7 @@
} catch (Exception e) {
DartCore.logError("Failed to process delta for " + dartSrc.getUri().toString(), e);
}
- return new CachedDirectives(importsSet, sourcesSet, resourcesSet);
+ return new CachedDirectives(libraryName, importsSet, sourcesSet, resourcesSet);
}
/**
@@ -1192,6 +1223,7 @@
}
DartUnit dartUnit = DartCompilerUtilities.parseSource(dartSrc, contents, parseErrors);
List<DartDirective> directives = dartUnit.getDirectives();
+ String libraryName = "";
Set<String> importsSet;
Set<String> sourcesSet;
Set<String> resourcesSet;
@@ -1209,6 +1241,9 @@
} else if (directive instanceof DartImportDirective) {
DartImportDirective importDirective = (DartImportDirective) directive;
importsSet.add(importDirective.getLibraryUri().getValue());
+ } else if (directive instanceof DartLibraryDirective) {
+ DartLibraryDirective libraryDirective = (DartLibraryDirective) directive;
+ libraryName = libraryDirective.getName().getValue();
}
}
} else {
@@ -1229,7 +1264,7 @@
if (!sourcesSet.contains(self)) {
sourcesSet.add(self);
}
- return new CachedDirectives(importsSet, sourcesSet, resourcesSet);
+ return new CachedDirectives(libraryName, importsSet, sourcesSet, resourcesSet);
}
/**

Powered by Google App Engine
This is Rietveld 408576698