Skip to content

Commit 970582e

Browse files
pqCommit Queue
authored andcommitted
fix options map sorting
Fixes: #55252 Change-Id: I2dbd0513039903ed95265d4546163f68236d88e9 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/359241 Reviewed-by: Brian Wilkerson <[email protected]> Commit-Queue: Phil Quitslund <[email protected]>
1 parent 4145eeb commit 970582e

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

pkg/analyzer/lib/src/dart/analysis/analysis_options_map.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ class AnalysisOptionsMap {
4141
void add(Folder folder, AnalysisOptionsImpl options) {
4242
entries.add(OptionsMapEntry(folder, options));
4343
// Sort entries by (reverse) containment (for now).
44-
entries.sort((e1, e2) => e1.folder.contains(e2.folder.path) ? 1 : -1);
44+
entries.sort((e1, e2) => e2.folder.path.compareTo(e1.folder.path));
4545
}
4646

4747
/// Perform the given [action] on all the mapped options.

pkg/analyzer/test/src/dart/analysis/analysis_options_map_test.dart

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,31 @@ class AnalysisOptionsMapTest with ResourceProviderMixin {
3838
expect(map.getOptions(file).file, isNull);
3939
}
4040

41+
/// https://github.com/dart-lang/sdk/issues/55252
42+
test_optionsMapLookup() {
43+
AnalysisOptions optionsFor(String file) =>
44+
map.getOptions(newFile(file, ''));
45+
46+
AnalysisOptions addOptions(String folder) {
47+
var options = AnalysisOptionsImpl();
48+
map.add(newFolder(folder), options);
49+
return options;
50+
}
51+
52+
var fOptions = addOptions('/home/test/f');
53+
addOptions('/home/test/g');
54+
var fghOptions = addOptions('/home/test/f/g/h');
55+
var fghiOptions = addOptions('/home/test/f/g/h/i');
56+
addOptions('/home/test/h');
57+
var fgOptions = addOptions('/home/test/f/g');
58+
59+
// Ensure lookup retrieves the most specific options files.
60+
expect(optionsFor('/home/test/f/c.dart'), fOptions);
61+
expect(optionsFor('/home/test/f/g/c.dart'), fgOptions);
62+
expect(optionsFor('/home/test/f/g/h/c.dart'), fghOptions);
63+
expect(optionsFor('/home/test/f/g/h/i/c.dart'), fghiOptions);
64+
}
65+
4166
test_singleOptions() {
4267
var rootOptions = AnalysisOptionsImpl();
4368
var rootFolder = newFolder('/home/test');

0 commit comments

Comments
 (0)