| 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}
|
|
|