Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(655)

Side by Side Diff: pkg/kernel/lib/binary/limited_ast_to_binary.dart

Issue 2906693002: Serialize also canonical names of 'interfaceTargetReference'. (Closed)
Patch Set: Keep interfaceTargetReference recording in ReferencesStringIndexer. Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « pkg/front_end/test/incremental_kernel_generator_test.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, 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 import 'package:kernel/ast.dart'; 5 import 'package:kernel/ast.dart';
6 import 'package:kernel/binary/ast_to_binary.dart'; 6 import 'package:kernel/binary/ast_to_binary.dart';
7 7
8 /// Writes libraries that satisfy the [predicate]. 8 /// Writes libraries that satisfy the [predicate].
9 /// 9 ///
10 /// Only the referenced subset of canonical names is indexed and written, 10 /// Only the referenced subset of canonical names is indexed and written,
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 if (node is Library && !predicate(node)) return; 50 if (node is Library && !predicate(node)) return;
51 node.accept(this); 51 node.accept(this);
52 } 52 }
53 } 53 }
54 54
55 /// Extension of [StringIndexer] that also indexes canonical names of 55 /// Extension of [StringIndexer] that also indexes canonical names of
56 /// referenced classes and members. 56 /// referenced classes and members.
57 class ReferencesStringIndexer extends StringIndexer { 57 class ReferencesStringIndexer extends StringIndexer {
58 final List<CanonicalName> referencedNames = <CanonicalName>[]; 58 final List<CanonicalName> referencedNames = <CanonicalName>[];
59 59
60 @override
60 defaultMemberReference(Member node) { 61 defaultMemberReference(Member node) {
61 _handleReferencedName(node.canonicalName); 62 _handleReferencedName(node.canonicalName);
62 } 63 }
63 64
65 @override
64 visitClassReference(Class node) { 66 visitClassReference(Class node) {
65 _handleReferencedName(node.canonicalName); 67 _handleReferencedName(node.canonicalName);
66 } 68 }
67 69
70 @override
71 visitMethodInvocation(MethodInvocation node) {
72 _handleReferencedName(node.interfaceTargetReference?.canonicalName);
73 return super.visitMethodInvocation(node);
74 }
75
76 @override
77 visitPropertyGet(PropertyGet node) {
78 _handleReferencedName(node.interfaceTargetReference?.canonicalName);
79 return super.visitPropertyGet(node);
80 }
81
82 @override
83 visitPropertySet(PropertySet node) {
84 _handleReferencedName(node.interfaceTargetReference?.canonicalName);
85 return super.visitPropertySet(node);
86 }
87
88 @override
89 visitSuperMethodInvocation(SuperMethodInvocation node) {
90 _handleReferencedName(node.interfaceTargetReference?.canonicalName);
91 return super.visitSuperMethodInvocation(node);
92 }
93
94 @override
95 visitSuperPropertyGet(SuperPropertyGet node) {
96 _handleReferencedName(node.interfaceTargetReference?.canonicalName);
97 return super.visitSuperPropertyGet(node);
98 }
99
100 @override
101 visitSuperPropertySet(SuperPropertySet node) {
102 _handleReferencedName(node.interfaceTargetReference?.canonicalName);
103 return super.visitSuperPropertySet(node);
104 }
105
68 void _handleReferencedName(CanonicalName name) { 106 void _handleReferencedName(CanonicalName name) {
69 if (name == null || name.parent == null) return; 107 if (name == null || name.parent == null) return;
70 _handleReferencedName(name.parent); 108 _handleReferencedName(name.parent);
71 referencedNames.add(name); 109 referencedNames.add(name);
72 name.index = -1; 110 name.index = -1;
73 put(name.name); 111 put(name.name);
74 } 112 }
75 } 113 }
OLDNEW
« no previous file with comments | « pkg/front_end/test/incremental_kernel_generator_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698