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 |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a3d0b6628946eba19c20a68d4128920feb234ce2 |
--- /dev/null |
+++ b/pkg/analyzer/test/generated/declaration_resolver_test.dart |
@@ -0,0 +1,98 @@ |
+// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE file. |
+ |
+library engine.declaration_resolver_test; |
+ |
+import 'package:analyzer/src/generated/ast.dart'; |
+import 'package:analyzer/src/generated/element.dart'; |
+import 'package:analyzer/src/generated/resolver.dart'; |
+import 'package:unittest/unittest.dart'; |
+ |
+import '../reflective_tests.dart'; |
+import '../utils.dart'; |
+import 'resolver_test.dart'; |
+import 'test_support.dart'; |
+ |
+main() { |
+ initializeTestEnvironment(); |
+ runReflectiveTests(DeclarationResolverTest); |
+} |
+ |
+@reflectiveTest |
+class DeclarationResolverTest extends ResolverTestCase { |
+ @override |
+ void setUp() { |
+ super.setUp(); |
+ } |
+ |
+ void test_functionDeclaration_getter() { |
+ String code = r''' |
+int get zzz => 42; |
+'''; |
+ CompilationUnit unit = resolveSource(code); |
+ PropertyAccessorElement getterElement = |
+ findSimpleIdentifier(unit, code, 'zzz =>').staticElement; |
+ expect(getterElement.isGetter, isTrue); |
+ // re-resolve |
+ CompilationUnit unit2 = _cloneResolveUnit(unit); |
+ SimpleIdentifier getterName = findSimpleIdentifier(unit2, code, 'zzz =>'); |
+ expect(getterName.staticElement, same(getterElement)); |
+ } |
+ |
+ void test_functionDeclaration_setter() { |
+ String code = r''' |
+void set zzz(_) {} |
+'''; |
+ CompilationUnit unit = resolveSource(code); |
+ PropertyAccessorElement setterElement = |
+ findSimpleIdentifier(unit, code, 'zzz(_)').staticElement; |
+ expect(setterElement.isSetter, isTrue); |
+ // re-resolve |
+ CompilationUnit unit2 = _cloneResolveUnit(unit); |
+ SimpleIdentifier getterName = findSimpleIdentifier(unit2, code, 'zzz(_)'); |
+ expect(getterName.staticElement, same(setterElement)); |
+ } |
+ |
+ void test_invalid_functionDeclaration_getter_inFunction() { |
+ String code = r''' |
+main() { |
+ int get zzz => 42; |
+} |
+'''; |
+ CompilationUnit unit = resolveSource(code); |
+ FunctionElement getterElement = |
+ findSimpleIdentifier(unit, code, 'zzz =>').staticElement; |
+ // re-resolve |
+ CompilationUnit unit2 = _cloneResolveUnit(unit); |
+ SimpleIdentifier getterName = findSimpleIdentifier(unit2, code, 'zzz =>'); |
+ expect(getterName.staticElement, same(getterElement)); |
+ } |
+ |
+ void test_invalid_functionDeclaration_setter_inFunction() { |
+ String code = r''' |
+main() { |
+ set zzz(x) {} |
+} |
+'''; |
+ CompilationUnit unit = resolveSource(code); |
+ FunctionElement setterElement = |
+ findSimpleIdentifier(unit, code, 'zzz(x)').staticElement; |
+ // re-resolve |
+ CompilationUnit unit2 = _cloneResolveUnit(unit); |
+ SimpleIdentifier setterName = findSimpleIdentifier(unit2, code, 'zzz(x)'); |
+ expect(setterName.staticElement, same(setterElement)); |
+ } |
+ |
+ static SimpleIdentifier findSimpleIdentifier( |
+ AstNode root, String code, String search) { |
+ return EngineTestCase.findNode( |
+ root, code, search, (n) => n is SimpleIdentifier); |
+ } |
+ |
+ static CompilationUnit _cloneResolveUnit(CompilationUnit unit) { |
+ CompilationUnit clonedUnit = AstCloner.clone(unit); |
+ new DeclarationResolver().resolve(clonedUnit, unit.element); |
+ return clonedUnit; |
+ } |
+} |