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

Unified Diff: pkg/analyzer/test/generated/declaration_resolver_test.dart

Issue 2435313002: More improvements to DeclarationResolver. (Closed)
Patch Set: Created 4 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: pkg/analyzer/test/generated/declaration_resolver_test.dart
diff --git a/pkg/analyzer/test/generated/declaration_resolver_test.dart b/pkg/analyzer/test/generated/declaration_resolver_test.dart
index 9226efeb25fb88fdad749c64c988cc4bf0f2e48c..74232ac7fe5404d111812d73fe3e78a3e8b147fc 100644
--- a/pkg/analyzer/test/generated/declaration_resolver_test.dart
+++ b/pkg/analyzer/test/generated/declaration_resolver_test.dart
@@ -45,13 +45,16 @@ class DeclarationResolverMetadataTest extends ResolverTestCase {
CompilationUnit unit;
CompilationUnit unit2;
- void checkMetadata(String search) {
+ void checkMetadata(String search, {bool expectDifferent: false}) {
NodeList<Annotation> metadata = _findMetadata(unit, search);
NodeList<Annotation> metadata2 = _findMetadata(unit2, search);
expect(metadata, isNotEmpty);
for (int i = 0; i < metadata.length; i++) {
- expect(
- metadata2[i].elementAnnotation, same(metadata[i].elementAnnotation));
+ Matcher expectation = same(metadata[i].elementAnnotation);
+ if (expectDifferent) {
+ expectation = isNot(expectation);
+ }
+ expect(metadata2[i].elementAnnotation, expectation);
}
}
@@ -83,7 +86,7 @@ class DeclarationResolverMetadataTest extends ResolverTestCase {
void test_metadata_declaredIdentifier() {
setupCode('f(x, y) { for (@a var x in y) {} }');
- checkMetadata('var');
+ checkMetadata('var', expectDifferent: true);
}
void test_metadata_enumDeclaration() {
@@ -175,7 +178,7 @@ class DeclarationResolverMetadataTest extends ResolverTestCase {
void test_metadata_localVariableDeclaration() {
setupCode('f() { @a int x; }');
- checkMetadata('x');
+ checkMetadata('x', expectDifferent: true);
}
void test_metadata_methodDeclaration_getter() {
@@ -258,6 +261,70 @@ class DeclarationResolverTest extends ResolverTestCase {
super.setUp();
}
+ void test_closure_inside_catch_block() {
+ String code = '''
+f() {
+ try {
+ } catch (e) {
+ return () => null;
+ }
+}
+''';
+ CompilationUnit unit = resolveSource(code);
+ // re-resolve
+ _cloneResolveUnit(unit);
+ // no other validations than built into DeclarationResolver
+ }
+
+ void test_closure_inside_labeled_statement() {
+ String code = '''
+f(b) {
+ foo: while (true) {
+ if (b) {
+ break foo;
+ }
+ return () => null;
+ }
+}
+''';
+ CompilationUnit unit = resolveSource(code);
+ // re-resolve
+ _cloneResolveUnit(unit);
+ // no other validations than built into DeclarationResolver
+ }
+
+ void test_closure_inside_switch_case() {
+ String code = '''
+void f(k, m) {
+ switch (k) {
+ case 0:
+ m.forEach((key, value) {});
+ break;
+ }
+}
+''';
+ CompilationUnit unit = resolveSource(code);
+ // re-resolve
+ _cloneResolveUnit(unit);
+ // no other validations than built into DeclarationResolver
+ }
+
+ void test_closure_inside_switch_default() {
+ String code = '''
+void f(k, m) {
+ switch (k) {
+ default:
+ m.forEach((key, value) {});
+ break;
+ }
+}
+''';
+ CompilationUnit unit = resolveSource(code);
+ // re-resolve
+ _cloneResolveUnit(unit);
+ // no other validations than built into DeclarationResolver
+ }
+
void test_enumConstant_partiallyResolved() {
String code = r'''
enum Fruit {apple, pear}
« no previous file with comments | « pkg/analyzer/lib/src/generated/declaration_resolver.dart ('k') | pkg/analyzer/test/src/context/context_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698