Chromium Code Reviews| 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 5221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 5232 } | 5232 } |
| 5233 | 5233 |
| 5234 void _checkForNotInstantiatedBound(TypeAnnotation node) { | 5234 void _checkForNotInstantiatedBound(TypeAnnotation node) { |
| 5235 if (!_options.strongMode || node == null) { | 5235 if (!_options.strongMode || node == null) { |
| 5236 return; | 5236 return; |
| 5237 } | 5237 } |
| 5238 | 5238 |
| 5239 if (node is TypeName) { | 5239 if (node is TypeName) { |
| 5240 if (node.typeArguments == null) { | 5240 if (node.typeArguments == null) { |
| 5241 DartType type = node.type; | 5241 DartType type = node.type; |
| 5242 if (type is InterfaceType && type.element.typeParameters.isNotEmpty) { | 5242 if (type is ParameterizedType) { |
|
Leaf
2017/01/27 23:24:06
This change is to make this apply to typedefs.
| |
| 5243 _errorReporter.reportErrorForNode( | 5243 Element element = type.element; |
| 5244 StrongModeCode.NOT_INSTANTIATED_BOUND, node, [type]); | 5244 if (element is TypeParameterizedElement && |
| 5245 element.typeParameters.any((p) => p.bound != null)) { | |
|
Leaf
2017/01/27 23:24:06
This change is to allow
class A<T> {}
class B<T
| |
| 5246 _errorReporter.reportErrorForNode( | |
| 5247 StrongModeCode.NOT_INSTANTIATED_BOUND, node, [type]); | |
| 5248 } | |
| 5245 } | 5249 } |
| 5246 } else { | 5250 } else { |
| 5247 node.typeArguments.arguments.forEach(_checkForNotInstantiatedBound); | 5251 node.typeArguments.arguments.forEach(_checkForNotInstantiatedBound); |
| 5248 } | 5252 } |
| 5249 } else { | 5253 } else { |
| 5250 throw new UnimplementedError('${node.runtimeType}'); | 5254 throw new UnimplementedError('${node.runtimeType}'); |
| 5251 } | 5255 } |
| 5252 } | 5256 } |
| 5253 | 5257 |
| 5254 /** | 5258 /** |
| (...skipping 1804 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 7059 class _InvocationCollector extends RecursiveAstVisitor { | 7063 class _InvocationCollector extends RecursiveAstVisitor { |
| 7060 final List<String> superCalls = <String>[]; | 7064 final List<String> superCalls = <String>[]; |
| 7061 | 7065 |
| 7062 @override | 7066 @override |
| 7063 visitMethodInvocation(MethodInvocation node) { | 7067 visitMethodInvocation(MethodInvocation node) { |
| 7064 if (node.target is SuperExpression) { | 7068 if (node.target is SuperExpression) { |
| 7065 superCalls.add(node.methodName.name); | 7069 superCalls.add(node.methodName.name); |
| 7066 } | 7070 } |
| 7067 } | 7071 } |
| 7068 } | 7072 } |
| OLD | NEW |