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

Side by Side Diff: pkg/analyzer/lib/src/generated/error_verifier.dart

Issue 2246293002: remove duplicate checking for overrides (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: fix Created 4 years, 4 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
« no previous file with comments | « no previous file | pkg/analyzer/test/generated/strong_mode_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 analyzer.src.generated.error_verifier; 5 library analyzer.src.generated.error_verifier;
6 6
7 import 'dart:collection'; 7 import 'dart:collection';
8 import "dart:math" as math; 8 import "dart:math" as math;
9 9
10 import 'package:analyzer/dart/ast/ast.dart'; 10 import 'package:analyzer/dart/ast/ast.dart';
(...skipping 1421 matching lines...) Expand 10 before | Expand all | Expand 10 after
1432 * [StaticWarningCode.INVALID_METHOD_OVERRIDE_OPTIONAL_PARAM_TYPE], 1432 * [StaticWarningCode.INVALID_METHOD_OVERRIDE_OPTIONAL_PARAM_TYPE],
1433 * [StaticWarningCode.INVALID_METHOD_OVERRIDE_NAMED_PARAM_TYPE], and 1433 * [StaticWarningCode.INVALID_METHOD_OVERRIDE_NAMED_PARAM_TYPE], and
1434 * [StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES]. 1434 * [StaticWarningCode.INVALID_OVERRIDE_DIFFERENT_DEFAULT_VALUES].
1435 */ 1435 */
1436 bool _checkForAllInvalidOverrideErrorCodes( 1436 bool _checkForAllInvalidOverrideErrorCodes(
1437 ExecutableElement derivedElement, 1437 ExecutableElement derivedElement,
1438 ExecutableElement baseElement, 1438 ExecutableElement baseElement,
1439 List<ParameterElement> parameters, 1439 List<ParameterElement> parameters,
1440 List<AstNode> parameterLocations, 1440 List<AstNode> parameterLocations,
1441 SimpleIdentifier errorNameTarget) { 1441 SimpleIdentifier errorNameTarget) {
1442 if (_options.strongMode) {
1443 return false; // strong mode already checked for this
1444 }
1445
1442 bool isGetter = false; 1446 bool isGetter = false;
1443 bool isSetter = false; 1447 bool isSetter = false;
1444 if (derivedElement is PropertyAccessorElement) { 1448 if (derivedElement is PropertyAccessorElement) {
1445 isGetter = derivedElement.isGetter; 1449 isGetter = derivedElement.isGetter;
1446 isSetter = derivedElement.isSetter; 1450 isSetter = derivedElement.isSetter;
1447 } 1451 }
1448 String executableElementName = derivedElement.name; 1452 String executableElementName = derivedElement.name;
1449 FunctionType derivedFT = derivedElement.type; 1453 FunctionType derivedFT = derivedElement.type;
1450 FunctionType baseFT = baseElement.type; 1454 FunctionType baseFT = baseElement.type;
1451 InterfaceType enclosingType = _enclosingClass.type; 1455 InterfaceType enclosingType = _enclosingClass.type;
(...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after
1771 * returns a [MultiplyInheritedExecutableElement], this method loops through 1775 * returns a [MultiplyInheritedExecutableElement], this method loops through
1772 * the list in the [MultiplyInheritedExecutableElement]. The [parameters] are 1776 * the list in the [MultiplyInheritedExecutableElement]. The [parameters] are
1773 * the parameters of the executable element. The [errorNameTarget] is the node 1777 * the parameters of the executable element. The [errorNameTarget] is the node
1774 * to report problems on. 1778 * to report problems on.
1775 */ 1779 */
1776 void _checkForAllInvalidOverrideErrorCodesForExecutable( 1780 void _checkForAllInvalidOverrideErrorCodesForExecutable(
1777 ExecutableElement executableElement, 1781 ExecutableElement executableElement,
1778 List<ParameterElement> parameters, 1782 List<ParameterElement> parameters,
1779 List<AstNode> parameterLocations, 1783 List<AstNode> parameterLocations,
1780 SimpleIdentifier errorNameTarget) { 1784 SimpleIdentifier errorNameTarget) {
1785 assert(!_options.strongMode); // strong mode already checked for these
1781 // 1786 //
1782 // Compute the overridden executable from the InheritanceManager 1787 // Compute the overridden executable from the InheritanceManager
1783 // 1788 //
1784 List<ExecutableElement> overriddenExecutables = _inheritanceManager 1789 List<ExecutableElement> overriddenExecutables = _inheritanceManager
1785 .lookupOverrides(_enclosingClass, executableElement.name); 1790 .lookupOverrides(_enclosingClass, executableElement.name);
1786 if (_checkForInstanceMethodNameCollidesWithSuperclassStatic( 1791 if (_checkForInstanceMethodNameCollidesWithSuperclassStatic(
1787 executableElement, errorNameTarget)) { 1792 executableElement, errorNameTarget)) {
1788 return; 1793 return;
1789 } 1794 }
1790 for (ExecutableElement overriddenElement in overriddenExecutables) { 1795 for (ExecutableElement overriddenElement in overriddenExecutables) {
1791 if (_checkForAllInvalidOverrideErrorCodes(executableElement, 1796 if (_checkForAllInvalidOverrideErrorCodes(executableElement,
1792 overriddenElement, parameters, parameterLocations, errorNameTarget)) { 1797 overriddenElement, parameters, parameterLocations, errorNameTarget)) {
1793 return; 1798 return;
1794 } 1799 }
1795 } 1800 }
1796 } 1801 }
1797 1802
1798 /** 1803 /**
1799 * Check the given field [declaration] against override-error codes. 1804 * Check the given field [declaration] against override-error codes.
1800 * 1805 *
1801 * See [_checkForAllInvalidOverrideErrorCodes]. 1806 * See [_checkForAllInvalidOverrideErrorCodes].
1802 */ 1807 */
1803 void _checkForAllInvalidOverrideErrorCodesForField( 1808 void _checkForAllInvalidOverrideErrorCodesForField(
1804 FieldDeclaration declaration) { 1809 FieldDeclaration declaration) {
1810 if (_options.strongMode) {
1811 return; // strong mode already checked for this
1812 }
1813
1805 if (_enclosingClass == null || declaration.isStatic) { 1814 if (_enclosingClass == null || declaration.isStatic) {
1806 return; 1815 return;
1807 } 1816 }
1808 1817
1809 VariableDeclarationList fields = declaration.fields; 1818 VariableDeclarationList fields = declaration.fields;
1810 for (VariableDeclaration field in fields.variables) { 1819 for (VariableDeclaration field in fields.variables) {
1811 FieldElement element = field.element as FieldElement; 1820 FieldElement element = field.element as FieldElement;
1812 if (element == null) { 1821 if (element == null) {
1813 continue; 1822 continue;
1814 } 1823 }
(...skipping 11 matching lines...) Expand all
1826 } 1835 }
1827 } 1836 }
1828 1837
1829 /** 1838 /**
1830 * Check the given [method] declaration against override-error codes. 1839 * Check the given [method] declaration against override-error codes.
1831 * 1840 *
1832 * See [_checkForAllInvalidOverrideErrorCodes]. 1841 * See [_checkForAllInvalidOverrideErrorCodes].
1833 */ 1842 */
1834 void _checkForAllInvalidOverrideErrorCodesForMethod( 1843 void _checkForAllInvalidOverrideErrorCodesForMethod(
1835 MethodDeclaration method) { 1844 MethodDeclaration method) {
1845 if (_options.strongMode) {
1846 return; // strong mode already checked for this
1847 }
1836 if (_enclosingClass == null || 1848 if (_enclosingClass == null ||
1837 method.isStatic || 1849 method.isStatic ||
1838 method.body is NativeFunctionBody) { 1850 method.body is NativeFunctionBody) {
1839 return; 1851 return;
1840 } 1852 }
1841 ExecutableElement executableElement = method.element; 1853 ExecutableElement executableElement = method.element;
1842 if (executableElement == null) { 1854 if (executableElement == null) {
1843 return; 1855 return;
1844 } 1856 }
1845 SimpleIdentifier methodName = method.name; 1857 SimpleIdentifier methodName = method.name;
(...skipping 4611 matching lines...) Expand 10 before | Expand all | Expand 10 after
6457 class _InvocationCollector extends RecursiveAstVisitor { 6469 class _InvocationCollector extends RecursiveAstVisitor {
6458 final List<String> superCalls = <String>[]; 6470 final List<String> superCalls = <String>[];
6459 6471
6460 @override 6472 @override
6461 visitMethodInvocation(MethodInvocation node) { 6473 visitMethodInvocation(MethodInvocation node) {
6462 if (node.target is SuperExpression) { 6474 if (node.target is SuperExpression) {
6463 superCalls.add(node.methodName.name); 6475 superCalls.add(node.methodName.name);
6464 } 6476 }
6465 } 6477 }
6466 } 6478 }
OLDNEW
« no previous file with comments | « no previous file | pkg/analyzer/test/generated/strong_mode_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698