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

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

Issue 1213833002: Use a FunctionSignature in CallStructure.signatureApplies (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Updated cf. comments. Created 5 years, 6 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 part of resolution; 5 part of resolution;
6 6
7 /** 7 /**
8 * Core implementation of resolution. 8 * Core implementation of resolution.
9 * 9 *
10 * Do not subclass or instantiate this class outside this library 10 * Do not subclass or instantiate this class outside this library
(...skipping 1452 matching lines...) Expand 10 before | Expand all | Expand 10 after
1463 } 1463 }
1464 if (checkSuperAccess(node)) { 1464 if (checkSuperAccess(node)) {
1465 AccessSemantics semantics = computeSuperAccessSemanticsForSelector( 1465 AccessSemantics semantics = computeSuperAccessSemanticsForSelector(
1466 node, selector, alternateName: name.setter); 1466 node, selector, alternateName: name.setter);
1467 if (node.isCall) { 1467 if (node.isCall) {
1468 bool isIncompatibleInvoke = false; 1468 bool isIncompatibleInvoke = false;
1469 switch (semantics.kind) { 1469 switch (semantics.kind) {
1470 case AccessKind.SUPER_METHOD: 1470 case AccessKind.SUPER_METHOD:
1471 MethodElementX superMethod = semantics.element; 1471 MethodElementX superMethod = semantics.element;
1472 superMethod.computeSignature(compiler); 1472 superMethod.computeSignature(compiler);
1473 if (!callStructure.signatureApplies(superMethod)) { 1473 if (!callStructure.signatureApplies(
1474 superMethod.functionSignature)) {
1474 registry.registerThrowNoSuchMethod(); 1475 registry.registerThrowNoSuchMethod();
1475 registry.registerDynamicInvocation( 1476 registry.registerDynamicInvocation(
1476 new UniverseSelector(selector, null)); 1477 new UniverseSelector(selector, null));
1477 registry.registerSuperNoSuchMethod(); 1478 registry.registerSuperNoSuchMethod();
1478 isIncompatibleInvoke = true; 1479 isIncompatibleInvoke = true;
1479 } else { 1480 } else {
1480 registry.registerStaticInvocation(semantics.element); 1481 registry.registerStaticInvocation(semantics.element);
1481 } 1482 }
1482 break; 1483 break;
1483 case AccessKind.SUPER_FIELD: 1484 case AccessKind.SUPER_FIELD:
(...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after
1871 selector = new Selector(SelectorKind.CALL, name, callStructure); 1872 selector = new Selector(SelectorKind.CALL, name, callStructure);
1872 } else { 1873 } else {
1873 selector = new Selector(SelectorKind.GETTER, name, callStructure); 1874 selector = new Selector(SelectorKind.GETTER, name, callStructure);
1874 } 1875 }
1875 if (node.isCall) { 1876 if (node.isCall) {
1876 bool isIncompatibleInvoke = false; 1877 bool isIncompatibleInvoke = false;
1877 switch (semantics.kind) { 1878 switch (semantics.kind) {
1878 case AccessKind.LOCAL_FUNCTION: 1879 case AccessKind.LOCAL_FUNCTION:
1879 LocalFunctionElementX function = semantics.element; 1880 LocalFunctionElementX function = semantics.element;
1880 function.computeSignature(compiler); 1881 function.computeSignature(compiler);
1881 if (!callStructure.signatureApplies(function)) { 1882 if (!callStructure.signatureApplies(function.functionSignature)) {
1882 registry.registerThrowNoSuchMethod(); 1883 registry.registerThrowNoSuchMethod();
1883 registry.registerDynamicInvocation( 1884 registry.registerDynamicInvocation(
1884 new UniverseSelector(selector, null)); 1885 new UniverseSelector(selector, null));
1885 isIncompatibleInvoke = true; 1886 isIncompatibleInvoke = true;
1886 } 1887 }
1887 break; 1888 break;
1888 case AccessKind.PARAMETER: 1889 case AccessKind.PARAMETER:
1889 case AccessKind.FINAL_PARAMETER: 1890 case AccessKind.FINAL_PARAMETER:
1890 case AccessKind.LOCAL_VARIABLE: 1891 case AccessKind.LOCAL_VARIABLE:
1891 case AccessKind.FINAL_LOCAL_VARIABLE: 1892 case AccessKind.FINAL_LOCAL_VARIABLE:
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
1947 } 1948 }
1948 AccessSemantics semantics = 1949 AccessSemantics semantics =
1949 computeStaticOrTopLevelAccessSemantics(node, member); 1950 computeStaticOrTopLevelAccessSemantics(node, member);
1950 if (node.isCall) { 1951 if (node.isCall) {
1951 bool isIncompatibleInvoke = false; 1952 bool isIncompatibleInvoke = false;
1952 switch (semantics.kind) { 1953 switch (semantics.kind) {
1953 case AccessKind.STATIC_METHOD: 1954 case AccessKind.STATIC_METHOD:
1954 case AccessKind.TOPLEVEL_METHOD: 1955 case AccessKind.TOPLEVEL_METHOD:
1955 MethodElementX method = semantics.element; 1956 MethodElementX method = semantics.element;
1956 method.computeSignature(compiler); 1957 method.computeSignature(compiler);
1957 if (!callStructure.signatureApplies(method)) { 1958 if (!callStructure.signatureApplies(method.functionSignature)) {
1958 registry.registerThrowNoSuchMethod(); 1959 registry.registerThrowNoSuchMethod();
1959 registry.registerDynamicInvocation( 1960 registry.registerDynamicInvocation(
1960 new UniverseSelector(selector, null)); 1961 new UniverseSelector(selector, null));
1961 isIncompatibleInvoke = true; 1962 isIncompatibleInvoke = true;
1962 } else { 1963 } else {
1963 registry.registerStaticUse(semantics.element); 1964 registry.registerStaticUse(semantics.element);
1964 handleForeignCall(node, semantics.element, selector); 1965 handleForeignCall(node, semantics.element, selector);
1965 } 1966 }
1966 break; 1967 break;
1967 case AccessKind.STATIC_FIELD: 1968 case AccessKind.STATIC_FIELD:
(...skipping 1515 matching lines...) Expand 10 before | Expand all | Expand 10 after
3483 } 3484 }
3484 return const NoneResult(); 3485 return const NoneResult();
3485 } 3486 }
3486 } 3487 }
3487 3488
3488 /// Looks up [name] in [scope] and unwraps the result. 3489 /// Looks up [name] in [scope] and unwraps the result.
3489 Element lookupInScope(Compiler compiler, Node node, 3490 Element lookupInScope(Compiler compiler, Node node,
3490 Scope scope, String name) { 3491 Scope scope, String name) {
3491 return Elements.unwrap(scope.lookup(name), compiler, node); 3492 return Elements.unwrap(scope.lookup(name), compiler, node);
3492 } 3493 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/resolution/constructors.dart ('k') | pkg/compiler/lib/src/resolution/send_resolver.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698