OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 related_types; | 5 library related_types; |
6 | 6 |
7 import 'package:compiler/src/commandline_options.dart'; | 7 import 'package:compiler/src/commandline_options.dart'; |
8 import 'package:compiler/src/compiler.dart'; | 8 import 'package:compiler/src/compiler.dart'; |
9 import 'package:compiler/src/core_types.dart'; | 9 import 'package:compiler/src/core_types.dart'; |
10 import 'package:compiler/src/dart_types.dart'; | 10 import 'package:compiler/src/dart_types.dart'; |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
52 checkMemberElement(compiler, element); | 52 checkMemberElement(compiler, element); |
53 } | 53 } |
54 }); | 54 }); |
55 } | 55 } |
56 | 56 |
57 /// Check [member] for unrelated types. | 57 /// Check [member] for unrelated types. |
58 void checkMemberElement(Compiler compiler, MemberElement member) { | 58 void checkMemberElement(Compiler compiler, MemberElement member) { |
59 if (!compiler.resolution.hasBeenResolved(member)) return; | 59 if (!compiler.resolution.hasBeenResolved(member)) return; |
60 | 60 |
61 ResolvedAst resolvedAst = member.resolvedAst; | 61 ResolvedAst resolvedAst = member.resolvedAst; |
62 RelatedTypesChecker relatedTypesChecker = | 62 if (resolvedAst.kind == ResolvedAstKind.PARSED) { |
63 new RelatedTypesChecker(compiler, resolvedAst); | 63 RelatedTypesChecker relatedTypesChecker = |
64 if (resolvedAst.node != null) { | 64 new RelatedTypesChecker(compiler, resolvedAst); |
65 compiler.reporter.withCurrentElement(member.implementation, () { | 65 compiler.reporter.withCurrentElement(member.implementation, () { |
66 relatedTypesChecker.apply(resolvedAst.node); | 66 relatedTypesChecker.apply(resolvedAst.node); |
67 }); | 67 }); |
68 } | 68 } |
69 } | 69 } |
70 | 70 |
71 class RelatedTypesChecker extends TraversalVisitor<DartType, dynamic> { | 71 class RelatedTypesChecker extends TraversalVisitor<DartType, dynamic> { |
72 final Compiler compiler; | 72 final Compiler compiler; |
73 final ResolvedAst resolvedAst; | 73 final ResolvedAst resolvedAst; |
74 | 74 |
(...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
429 ClassElement findClass(DartType type) => type.accept(this, null); | 429 ClassElement findClass(DartType type) => type.accept(this, null); |
430 | 430 |
431 @override | 431 @override |
432 ClassElement visitType(DartType type, _) => null; | 432 ClassElement visitType(DartType type, _) => null; |
433 | 433 |
434 @override | 434 @override |
435 ClassElement visitInterfaceType(InterfaceType type, _) { | 435 ClassElement visitInterfaceType(InterfaceType type, _) { |
436 return type.element; | 436 return type.element; |
437 } | 437 } |
438 } | 438 } |
OLD | NEW |