OLD | NEW |
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 944 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
955 SimpleIdentifier identifier = node.name; | 955 SimpleIdentifier identifier = node.name; |
956 String methodName = ""; | 956 String methodName = ""; |
957 if (identifier != null) { | 957 if (identifier != null) { |
958 methodName = identifier.name; | 958 methodName = identifier.name; |
959 } | 959 } |
960 TypeAnnotation returnType = node.returnType; | 960 TypeAnnotation returnType = node.returnType; |
961 if (node.isSetter || node.isGetter) { | 961 if (node.isSetter || node.isGetter) { |
962 _checkForMismatchedAccessorTypes(node, methodName); | 962 _checkForMismatchedAccessorTypes(node, methodName); |
963 } | 963 } |
964 if (node.isGetter) { | 964 if (node.isGetter) { |
| 965 _checkForVoidReturnType(node); |
965 _checkForConflictingStaticGetterAndInstanceSetter(node); | 966 _checkForConflictingStaticGetterAndInstanceSetter(node); |
966 } else if (node.isSetter) { | 967 } else if (node.isSetter) { |
967 _checkForInvalidModifierOnBody( | 968 _checkForInvalidModifierOnBody( |
968 node.body, CompileTimeErrorCode.INVALID_MODIFIER_ON_SETTER); | 969 node.body, CompileTimeErrorCode.INVALID_MODIFIER_ON_SETTER); |
969 _checkForWrongNumberOfParametersForSetter(node.name, node.parameters); | 970 _checkForWrongNumberOfParametersForSetter(node.name, node.parameters); |
970 _checkForNonVoidReturnTypeForSetter(returnType); | 971 _checkForNonVoidReturnTypeForSetter(returnType); |
971 _checkForConflictingStaticSetterAndInstanceMember(node); | 972 _checkForConflictingStaticSetterAndInstanceMember(node); |
972 } else if (node.isOperator) { | 973 } else if (node.isOperator) { |
973 _checkForOptionalParameterInOperator(node); | 974 _checkForOptionalParameterInOperator(node); |
974 _checkForWrongNumberOfParametersForOperator(node); | 975 _checkForWrongNumberOfParametersForOperator(node); |
(...skipping 5058 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6033 } | 6034 } |
6034 } | 6035 } |
6035 } | 6036 } |
6036 // else { | 6037 // else { |
6037 // // TODO(jwren) Report error, constructor initializer variable is a top
level element | 6038 // // TODO(jwren) Report error, constructor initializer variable is a top
level element |
6038 // // (Either here or in ErrorVerifier.checkForAllFinalInitializedErrorCo
des) | 6039 // // (Either here or in ErrorVerifier.checkForAllFinalInitializedErrorCo
des) |
6039 // } | 6040 // } |
6040 } | 6041 } |
6041 | 6042 |
6042 /** | 6043 /** |
| 6044 * Verify that the given [getter] does not have a return type of 'void'. |
| 6045 * |
| 6046 * See [StaticWarningCode.VOID_RETURN_FOR_GETTER]. |
| 6047 */ |
| 6048 void _checkForVoidReturnType(MethodDeclaration getter) { |
| 6049 TypeAnnotation returnType = getter.returnType; |
| 6050 if (returnType is TypeName && returnType.name.name == "void") { |
| 6051 _errorReporter.reportErrorForNode( |
| 6052 StaticWarningCode.VOID_RETURN_FOR_GETTER, returnType); |
| 6053 } |
| 6054 } |
| 6055 |
| 6056 /** |
6043 * Verify the given operator-method [declaration], has correct number of | 6057 * Verify the given operator-method [declaration], has correct number of |
6044 * parameters. | 6058 * parameters. |
6045 * | 6059 * |
6046 * This method assumes that the method declaration was tested to be an | 6060 * This method assumes that the method declaration was tested to be an |
6047 * operator declaration before being called. | 6061 * operator declaration before being called. |
6048 * | 6062 * |
6049 * See [CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR]. | 6063 * See [CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_OPERATOR]. |
6050 */ | 6064 */ |
6051 void _checkForWrongNumberOfParametersForOperator( | 6065 void _checkForWrongNumberOfParametersForOperator( |
6052 MethodDeclaration declaration) { | 6066 MethodDeclaration declaration) { |
(...skipping 1091 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7144 class _InvocationCollector extends RecursiveAstVisitor { | 7158 class _InvocationCollector extends RecursiveAstVisitor { |
7145 final List<String> superCalls = <String>[]; | 7159 final List<String> superCalls = <String>[]; |
7146 | 7160 |
7147 @override | 7161 @override |
7148 visitMethodInvocation(MethodInvocation node) { | 7162 visitMethodInvocation(MethodInvocation node) { |
7149 if (node.target is SuperExpression) { | 7163 if (node.target is SuperExpression) { |
7150 superCalls.add(node.methodName.name); | 7164 superCalls.add(node.methodName.name); |
7151 } | 7165 } |
7152 } | 7166 } |
7153 } | 7167 } |
OLD | NEW |