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

Side by Side Diff: pkg/compiler/lib/src/resolution/members.dart

Issue 2000663002: Handle resolvedAst for forwarding constructors and callType on unnamed mixin applications. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Fix test. Created 4 years, 7 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 unified diff | Download patch
OLDNEW
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
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
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 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/resolution/class_members.dart ('k') | pkg/compiler/lib/src/resolution/resolution.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698