From 3dd838be64c5bd577b3bdff01bf5656572a4640e Mon Sep 17 00:00:00 2001 From: Nate Bosch Date: Tue, 15 Feb 2022 10:46:52 -0800 Subject: [PATCH 1/2] await a missed test failure, skip broken test This test should be failing but the error is lost because `throwsA` does not force the test to wait until the condition is checked. https://github.com/dart-lang/test/issues/1670 Fix the pattern to use `await expectLater` instead of `await expect` so the failure will show up. Skip the test for now. --- build_resolvers/test/resolver_test.dart | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/build_resolvers/test/resolver_test.dart b/build_resolvers/test/resolver_test.dart index ad4d60a2c..d84838c87 100644 --- a/build_resolvers/test/resolver_test.dart +++ b/build_resolvers/test/resolver_test.dart @@ -397,7 +397,7 @@ void main() { }, resolvers: AnalyzerResolvers()); }); - test('assetIdForElement throws for ambigious elements', () { + test('assetIdForElement throws for ambiguous elements', () { return resolveSources({ 'a|lib/a.dart': ''' import 'b.dart'; @@ -415,10 +415,10 @@ void main() { var classDefinition = entry.importedLibraries .map((l) => l.getType('SomeClass')) .singleWhere((c) => c != null)!; - expect(() => resolver.assetIdForElement(classDefinition), + await expectLater(() => resolver.assetIdForElement(classDefinition), throwsA(isA())); }, resolvers: AnalyzerResolvers()); - }); + }, skip: 'broken'); test('Respects withEnabledExperiments', () async { Logger.root.level = Level.ALL; From 4ae50fa88ffb2cb1965fc5b6a7a6c593262e3322 Mon Sep 17 00:00:00 2001 From: Nate Bosch Date: Tue, 15 Feb 2022 15:55:08 -0800 Subject: [PATCH 2/2] Find an ambiguous element Use an annotation that could resolve to a class from one of two imports. --- build_resolvers/test/resolver_test.dart | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/build_resolvers/test/resolver_test.dart b/build_resolvers/test/resolver_test.dart index d84838c87..3d1ba16fd 100644 --- a/build_resolvers/test/resolver_test.dart +++ b/build_resolvers/test/resolver_test.dart @@ -401,24 +401,28 @@ void main() { return resolveSources({ 'a|lib/a.dart': ''' import 'b.dart'; + import 'c.dart'; - class SomeClass {} - - main() { - SomeClass(); - } ''', + @SomeClass() + main() {} + ''', 'a|lib/b.dart': ''' class SomeClass {} ''', + 'a|lib/c.dart': ''' + class SomeClass {} + ''', }, (resolver) async { var entry = await resolver.libraryFor(AssetId('a', 'lib/a.dart')); - var classDefinition = entry.importedLibraries - .map((l) => l.getType('SomeClass')) - .singleWhere((c) => c != null)!; - await expectLater(() => resolver.assetIdForElement(classDefinition), + final element = entry.topLevelElements + .firstWhere((e) => e is FunctionElement && e.name == 'main') + .metadata + .single + .element!; + await expectLater(() => resolver.assetIdForElement(element), throwsA(isA())); }, resolvers: AnalyzerResolvers()); - }, skip: 'broken'); + }); test('Respects withEnabledExperiments', () async { Logger.root.level = Level.ALL;