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 engine.resolver.error_verifier; | 5 library engine.resolver.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 'java_engine.dart'; | 10 import 'java_engine.dart'; |
(...skipping 1341 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1352 for (int i = 0; i < parameterElts.length; i++) { | 1352 for (int i = 0; i < parameterElts.length; i++) { |
1353 ParameterElementImpl parameterElt = parameterElts[i]; | 1353 ParameterElementImpl parameterElt = parameterElts[i]; |
1354 EvaluationResultImpl result = parameterElt.evaluationResult; | 1354 EvaluationResultImpl result = parameterElt.evaluationResult; |
1355 // TODO (jwren) Ignore Object types, see Dart bug 11287 | 1355 // TODO (jwren) Ignore Object types, see Dart bug 11287 |
1356 if (_isUserDefinedObject(result)) { | 1356 if (_isUserDefinedObject(result)) { |
1357 continue; | 1357 continue; |
1358 } | 1358 } |
1359 String parameterName = parameterElt.name; | 1359 String parameterName = parameterElt.name; |
1360 for (int j = 0; j < overriddenParameterElts.length; j++) { | 1360 for (int j = 0; j < overriddenParameterElts.length; j++) { |
1361 ParameterElementImpl overriddenParameterElt = overriddenParameterElt
s[j]; | 1361 ParameterElementImpl overriddenParameterElt = overriddenParameterElt
s[j]; |
| 1362 if (overriddenParameterElt.initializer == null) { |
| 1363 // There is no warning if the overridden parameter has an |
| 1364 // implicit default. |
| 1365 continue; |
| 1366 } |
1362 String overriddenParameterName = overriddenParameterElt.name; | 1367 String overriddenParameterName = overriddenParameterElt.name; |
1363 if (parameterName != null && parameterName == overriddenParameterNam
e) { | 1368 if (parameterName != null && parameterName == overriddenParameterNam
e) { |
1364 EvaluationResultImpl overriddenResult = overriddenParameterElt.eva
luationResult; | 1369 EvaluationResultImpl overriddenResult = overriddenParameterElt.eva
luationResult; |
1365 if (_isUserDefinedObject(overriddenResult)) { | 1370 if (_isUserDefinedObject(overriddenResult)) { |
1366 break; | 1371 break; |
1367 } | 1372 } |
1368 if (!result.equalValues(_typeProvider, overriddenResult)) { | 1373 if (!result.equalValues(_typeProvider, overriddenResult)) { |
1369 _errorReporter.reportErrorForNode(StaticWarningCode.INVALID_OVER
RIDE_DIFFERENT_DEFAULT_VALUES_NAMED, formalParameters[i], [ | 1374 _errorReporter.reportErrorForNode(StaticWarningCode.INVALID_OVER
RIDE_DIFFERENT_DEFAULT_VALUES_NAMED, formalParameters[i], [ |
1370 overriddenExecutable.enclosingElement.displayName, | 1375 overriddenExecutable.enclosingElement.displayName, |
1371 overriddenExecutable.displayName, | 1376 overriddenExecutable.displayName, |
1372 parameterName]); | 1377 parameterName]); |
1373 foundError = true; | 1378 foundError = true; |
1374 } | 1379 } |
1375 } | 1380 } |
1376 } | 1381 } |
1377 } | 1382 } |
1378 } else { | 1383 } else { |
1379 // Positional parameters, consider the positions when matching the param
eterElts to the overriddenParameterElts | 1384 // Positional parameters, consider the positions when matching the param
eterElts to the overriddenParameterElts |
1380 for (int i = 0; i < parameterElts.length && i < overriddenParameterElts.
length; i++) { | 1385 for (int i = 0; i < parameterElts.length && i < overriddenParameterElts.
length; i++) { |
1381 ParameterElementImpl parameterElt = parameterElts[i]; | 1386 ParameterElementImpl parameterElt = parameterElts[i]; |
1382 EvaluationResultImpl result = parameterElt.evaluationResult; | 1387 EvaluationResultImpl result = parameterElt.evaluationResult; |
1383 // TODO (jwren) Ignore Object types, see Dart bug 11287 | 1388 // TODO (jwren) Ignore Object types, see Dart bug 11287 |
1384 if (_isUserDefinedObject(result)) { | 1389 if (_isUserDefinedObject(result)) { |
1385 continue; | 1390 continue; |
1386 } | 1391 } |
1387 ParameterElementImpl overriddenParameterElt = overriddenParameterElts[
i]; | 1392 ParameterElementImpl overriddenParameterElt = overriddenParameterElts[
i]; |
| 1393 if (overriddenParameterElt.initializer == null) { |
| 1394 // There is no warning if the overridden parameter has an implicit |
| 1395 // default. |
| 1396 continue; |
| 1397 } |
1388 EvaluationResultImpl overriddenResult = overriddenParameterElt.evaluat
ionResult; | 1398 EvaluationResultImpl overriddenResult = overriddenParameterElt.evaluat
ionResult; |
1389 if (_isUserDefinedObject(overriddenResult)) { | 1399 if (_isUserDefinedObject(overriddenResult)) { |
1390 continue; | 1400 continue; |
1391 } | 1401 } |
1392 if (!result.equalValues(_typeProvider, overriddenResult)) { | 1402 if (!result.equalValues(_typeProvider, overriddenResult)) { |
1393 _errorReporter.reportErrorForNode(StaticWarningCode.INVALID_OVERRIDE
_DIFFERENT_DEFAULT_VALUES_POSITIONAL, formalParameters[i], [ | 1403 _errorReporter.reportErrorForNode(StaticWarningCode.INVALID_OVERRIDE
_DIFFERENT_DEFAULT_VALUES_POSITIONAL, formalParameters[i], [ |
1394 overriddenExecutable.enclosingElement.displayName, | 1404 overriddenExecutable.enclosingElement.displayName, |
1395 overriddenExecutable.displayName]); | 1405 overriddenExecutable.displayName]); |
1396 foundError = true; | 1406 foundError = true; |
1397 } | 1407 } |
(...skipping 4091 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5489 toCheck.add(element); | 5499 toCheck.add(element); |
5490 // type arguments | 5500 // type arguments |
5491 if (type is InterfaceType) { | 5501 if (type is InterfaceType) { |
5492 InterfaceType interfaceType = type; | 5502 InterfaceType interfaceType = type; |
5493 for (DartType typeArgument in interfaceType.typeArguments) { | 5503 for (DartType typeArgument in interfaceType.typeArguments) { |
5494 _addTypeToCheck(typeArgument); | 5504 _addTypeToCheck(typeArgument); |
5495 } | 5505 } |
5496 } | 5506 } |
5497 } | 5507 } |
5498 } | 5508 } |
OLD | NEW |