| Index: pkg/analyzer/lib/src/task/strong/info.dart
|
| diff --git a/pkg/analyzer/lib/src/task/strong/info.dart b/pkg/analyzer/lib/src/task/strong/info.dart
|
| index 4f39f6b347fcc41ae3c8a28fd177801ee58685df..82954395b981c280bf19aa23b365d4ea816a45c9 100644
|
| --- a/pkg/analyzer/lib/src/task/strong/info.dart
|
| +++ b/pkg/analyzer/lib/src/task/strong/info.dart
|
| @@ -138,6 +138,19 @@ abstract class DownCast extends CoercionInfo {
|
| }
|
| }
|
|
|
| + Element element = null;
|
| + if (expression is PropertyAccess) {
|
| + element = expression.propertyName.staticElement;
|
| + } else if (expression is Identifier) {
|
| + element = expression.staticElement;
|
| + }
|
| + // First class functions and static methods, where we know the original
|
| + // declaration, will have an exact type, so we know a downcast will fail.
|
| + if (element is FunctionElement ||
|
| + element is MethodElement && element.isStatic) {
|
| + return new StaticTypeError(rules, expression, toT, reason: reason);
|
| + }
|
| +
|
| // TODO(vsm): Change this to an assert when we have generic methods and
|
| // fix TypeRules._coerceTo to disallow implicit sideways casts.
|
| if (!rules.isSubtypeOf(toT, fromT)) {
|
|
|