fix options map sorting

Fixes: https://github.com/dart-lang/sdk/issues/55252

Change-Id: I2dbd0513039903ed95265d4546163f68236d88e9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/359241
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Phil Quitslund <pquitslund@google.com>
This commit is contained in:
pq 2024-03-22 21:24:50 +00:00 committed by Commit Queue
parent 4145eeba06
commit 970582ec20
2 changed files with 26 additions and 1 deletions

View file

@ -41,7 +41,7 @@ class AnalysisOptionsMap {
void add(Folder folder, AnalysisOptionsImpl options) {
entries.add(OptionsMapEntry(folder, options));
// Sort entries by (reverse) containment (for now).
entries.sort((e1, e2) => e1.folder.contains(e2.folder.path) ? 1 : -1);
entries.sort((e1, e2) => e2.folder.path.compareTo(e1.folder.path));
}
/// Perform the given [action] on all the mapped options.

View file

@ -38,6 +38,31 @@ class AnalysisOptionsMapTest with ResourceProviderMixin {
expect(map.getOptions(file).file, isNull);
}
/// https://github.com/dart-lang/sdk/issues/55252
test_optionsMapLookup() {
AnalysisOptions optionsFor(String file) =>
map.getOptions(newFile(file, ''));
AnalysisOptions addOptions(String folder) {
var options = AnalysisOptionsImpl();
map.add(newFolder(folder), options);
return options;
}
var fOptions = addOptions('/home/test/f');
addOptions('/home/test/g');
var fghOptions = addOptions('/home/test/f/g/h');
var fghiOptions = addOptions('/home/test/f/g/h/i');
addOptions('/home/test/h');
var fgOptions = addOptions('/home/test/f/g');
// Ensure lookup retrieves the most specific options files.
expect(optionsFor('/home/test/f/c.dart'), fOptions);
expect(optionsFor('/home/test/f/g/c.dart'), fgOptions);
expect(optionsFor('/home/test/f/g/h/c.dart'), fghOptions);
expect(optionsFor('/home/test/f/g/h/i/c.dart'), fghiOptions);
}
test_singleOptions() {
var rootOptions = AnalysisOptionsImpl();
var rootFolder = newFolder('/home/test');