| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library dart2js.resolution.members; | 5 library dart2js.resolution.members; |
| 6 | 6 |
| 7 import '../common.dart'; | 7 import '../common.dart'; |
| 8 import '../common/names.dart' show Selectors; | 8 import '../common/names.dart' show Selectors; |
| 9 import '../common/resolution.dart' show Feature; | 9 import '../common/resolution.dart' show Feature; |
| 10 import '../compiler.dart' show Compiler; | 10 import '../compiler.dart' show Compiler; |
| (...skipping 1806 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1817 if (node.isOperator) { | 1817 if (node.isOperator) { |
| 1818 // When the resolved receiver is a class, we can have two cases: | 1818 // When the resolved receiver is a class, we can have two cases: |
| 1819 // 1) a static send: C.foo, or | 1819 // 1) a static send: C.foo, or |
| 1820 // 2) an operator send, where the receiver is a class literal: 'C + 1'. | 1820 // 2) an operator send, where the receiver is a class literal: 'C + 1'. |
| 1821 // The following code that looks up the selector on the resolved | 1821 // The following code that looks up the selector on the resolved |
| 1822 // receiver will treat the second as the invocation of a static operator | 1822 // receiver will treat the second as the invocation of a static operator |
| 1823 // if the resolved receiver is not null. | 1823 // if the resolved receiver is not null. |
| 1824 return const NoneResult(); | 1824 return const NoneResult(); |
| 1825 } | 1825 } |
| 1826 MembersCreator.computeClassMembersByName( | 1826 MembersCreator.computeClassMembersByName( |
| 1827 compiler, receiverClass.declaration, name); | 1827 resolution, receiverClass.declaration, name); |
| 1828 Element member = receiverClass.lookupLocalMember(name); | 1828 Element member = receiverClass.lookupLocalMember(name); |
| 1829 if (member == null) { | 1829 if (member == null) { |
| 1830 return handleUnresolvedStaticMemberAccess( | 1830 return handleUnresolvedStaticMemberAccess( |
| 1831 node, memberName, receiverClass); | 1831 node, memberName, receiverClass); |
| 1832 } else if (member.isAmbiguous) { | 1832 } else if (member.isAmbiguous) { |
| 1833 return handleAmbiguousSend(node, memberName, member); | 1833 return handleAmbiguousSend(node, memberName, member); |
| 1834 } else if (member.isInstanceMember) { | 1834 } else if (member.isInstanceMember) { |
| 1835 return handleStaticInstanceMemberAccess( | 1835 return handleStaticInstanceMemberAccess( |
| 1836 node, memberName, receiverClass, member); | 1836 node, memberName, receiverClass, member); |
| 1837 } else if (memberName.isPrivate && memberName.library != member.library) { | 1837 } else if (memberName.isPrivate && memberName.library != member.library) { |
| 1838 return handlePrivateStaticMemberAccess( | 1838 return handlePrivateStaticMemberAccess( |
| 1839 node, memberName, receiverClass, member); | 1839 node, memberName, receiverClass, member); |
| 1840 } else { | 1840 } else { |
| 1841 return handleStaticOrTopLevelAccess(node, memberName, member); | 1841 return handleStaticOrTopLevelAccess(node, memberName, member); |
| 1842 } | 1842 } |
| 1843 } | 1843 } |
| 1844 | 1844 |
| 1845 /// Handle qualified update to a static member, like `a.b = c` or `a.b++` | 1845 /// Handle qualified update to a static member, like `a.b = c` or `a.b++` |
| 1846 /// where `a` is a class and `b` is a static member of `a`. | 1846 /// where `a` is a class and `b` is a static member of `a`. |
| 1847 ResolutionResult handleStaticMemberUpdate( | 1847 ResolutionResult handleStaticMemberUpdate( |
| 1848 Send node, Name memberName, ClassElement receiverClass) { | 1848 Send node, Name memberName, ClassElement receiverClass) { |
| 1849 String name = memberName.text; | 1849 String name = memberName.text; |
| 1850 receiverClass.ensureResolved(resolution); | 1850 receiverClass.ensureResolved(resolution); |
| 1851 MembersCreator.computeClassMembersByName( | 1851 MembersCreator.computeClassMembersByName( |
| 1852 compiler, receiverClass.declaration, name); | 1852 resolution, receiverClass.declaration, name); |
| 1853 Element member = receiverClass.lookupLocalMember(name); | 1853 Element member = receiverClass.lookupLocalMember(name); |
| 1854 if (member == null) { | 1854 if (member == null) { |
| 1855 return handleUnresolvedStaticMemberUpdate( | 1855 return handleUnresolvedStaticMemberUpdate( |
| 1856 node, memberName, receiverClass); | 1856 node, memberName, receiverClass); |
| 1857 } else if (member.isAmbiguous) { | 1857 } else if (member.isAmbiguous) { |
| 1858 return handleAmbiguousUpdate(node, memberName, member); | 1858 return handleAmbiguousUpdate(node, memberName, member); |
| 1859 } else if (member.isInstanceMember) { | 1859 } else if (member.isInstanceMember) { |
| 1860 return handleStaticInstanceMemberUpdate( | 1860 return handleStaticInstanceMemberUpdate( |
| 1861 node, memberName, receiverClass, member); | 1861 node, memberName, receiverClass, member); |
| 1862 } else if (memberName.isPrivate && memberName.library != member.library) { | 1862 } else if (memberName.isPrivate && memberName.library != member.library) { |
| (...skipping 2834 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4697 } | 4697 } |
| 4698 return const NoneResult(); | 4698 return const NoneResult(); |
| 4699 } | 4699 } |
| 4700 } | 4700 } |
| 4701 | 4701 |
| 4702 /// Looks up [name] in [scope] and unwraps the result. | 4702 /// Looks up [name] in [scope] and unwraps the result. |
| 4703 Element lookupInScope( | 4703 Element lookupInScope( |
| 4704 DiagnosticReporter reporter, Node node, Scope scope, String name) { | 4704 DiagnosticReporter reporter, Node node, Scope scope, String name) { |
| 4705 return Elements.unwrap(scope.lookup(name), reporter, node); | 4705 return Elements.unwrap(scope.lookup(name), reporter, node); |
| 4706 } | 4706 } |
| OLD | NEW |