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

Side by Side Diff: pkg/smoke/lib/smoke.dart

Issue 204143002: Changes in smoke in preparation of polymer's codegen: (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 9 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 | Annotate | Revision Log
« no previous file with comments | « pkg/smoke/lib/mirrors.dart ('k') | pkg/smoke/lib/src/common.dart » ('j') | 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) 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 /// Collects services that can be used to access objects dynamically, inspect 5 /// Collects services that can be used to access objects dynamically, inspect
6 /// type information, and convert between symbols and strings. 6 /// type information, and convert between symbols and strings.
7 library smoke; 7 library smoke;
8 8
9 import 'src/implementation.dart' as implementation; 9 import 'src/implementation.dart' as implementation;
10 10
11 export 'src/common.dart' show minArgs, maxArgs, SUPPORTED_ARGS; 11 export 'src/common.dart' show minArgs, maxArgs, SUPPORTED_ARGS;
12 import 'src/common.dart' show compareLists;
12 13
13 /// Configures this library to use [objectAccessor] for all read/write/invoke 14 /// Configures this library to use [objectAccessor] for all read/write/invoke
14 /// APIs, [typeInspector] for all type query APIs, and [symbolConverter] for all 15 /// APIs, [typeInspector] for all type query APIs, and [symbolConverter] for all
15 /// symbol convertion operations. 16 /// symbol convertion operations.
16 /// 17 ///
17 /// This function doesn't need to be called during development, but frameworks 18 /// This function doesn't need to be called during development, but frameworks
18 /// should autogenerate a call to this function when running in deployment. 19 /// should autogenerate a call to this function when running in deployment.
19 void configure(ObjectAccessorService objectAccessor, 20 void configure(ObjectAccessorService objectAccessor,
20 TypeInspectorService typeInspector, 21 TypeInspectorService typeInspector,
21 SymbolConverterService symbolConverter) { 22 SymbolConverterService symbolConverter) {
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 final bool excludeFinal; 115 final bool excludeFinal;
115 116
116 /// Whether to include methods (default is false). 117 /// Whether to include methods (default is false).
117 final bool includeMethods; 118 final bool includeMethods;
118 119
119 /// If [withAnnotation] is not null, then it should be a list of types, so 120 /// If [withAnnotation] is not null, then it should be a list of types, so
120 /// only symbols that are annotated with instances of those types are 121 /// only symbols that are annotated with instances of those types are
121 /// included. 122 /// included.
122 final List withAnnotations; 123 final List withAnnotations;
123 124
125 /// If [matches] is not null, then include only those fields, properties, or
126 /// methods that match the predicate.
127 final NameMatcher matches;
128
124 const QueryOptions({ 129 const QueryOptions({
125 this.includeFields: true, 130 this.includeFields: true,
126 this.includeProperties: true, 131 this.includeProperties: true,
127 this.includeInherited: true, 132 this.includeInherited: true,
128 this.includeUpTo: Object, 133 this.includeUpTo: Object,
129 this.excludeFinal: false, 134 this.excludeFinal: false,
130 this.includeMethods: false, 135 this.includeMethods: false,
131 this.withAnnotations: null}); 136 this.withAnnotations: null,
137 this.matches: null});
138
139 String toString() => (new StringBuffer()
140 ..write('(options:')
141 ..write(includeFields ? 'fields ' : '')
142 ..write(includeProperties ? 'properties ' : '')
143 ..write(includeMethods ? 'methods ' : '')
144 ..write(includeInherited ? 'inherited ' : '_')
145 ..write(excludeFinal ? 'no finals ' : '')
146 ..write('annotations: $withAnnotations')
147 ..write(matches != null ? 'with matcher' : '')
148 ..write(')')).toString();
132 } 149 }
133 150
151 /// Used to filter query results based on a predicate on [name]. Returns true if
152 /// [name] should be included in the query results.
153 typedef bool NameMatcher(Symbol name);
154
134 /// Information associated with a symbol declaration (like a property or 155 /// Information associated with a symbol declaration (like a property or
135 /// method). 156 /// method).
136 class Declaration { 157 class Declaration {
137 /// Name of the property or method 158 /// Name of the property or method
138 final Symbol name; 159 final Symbol name;
139 160
140 /// Kind of declaration (field, property, or method). 161 /// Kind of declaration (field, property, or method).
141 final DeclarationKind kind; 162 final DeclarationKind kind;
142 163
143 /// Whether the symbol is a field (and not a getter/setter property). 164 /// Whether the symbol is a field (and not a getter/setter property).
(...skipping 15 matching lines...) Expand all
159 180
160 /// Whether this symbol is static. 181 /// Whether this symbol is static.
161 final bool isStatic; 182 final bool isStatic;
162 183
163 /// List of annotations in this declaration. 184 /// List of annotations in this declaration.
164 final List annotations; 185 final List annotations;
165 186
166 const Declaration(this.name, this.type, {this.kind: FIELD, 187 const Declaration(this.name, this.type, {this.kind: FIELD,
167 this.isFinal: false, this.isStatic: false, this.annotations: const []}); 188 this.isFinal: false, this.isStatic: false, this.annotations: const []});
168 189
190 int get hashCode => name.hashCode;
191 operator ==(other) => other is Declaration && name == other.name &&
192 kind == other.kind && isFinal == other.isFinal &&
193 type == other.type && isStatic == other.isStatic &&
194 compareLists(annotations, other.annotations);
195
169 String toString() { 196 String toString() {
170 return (new StringBuffer() 197 return (new StringBuffer()
171 ..write('[declaration ') 198 ..write('(declaration ')
172 ..write(name) 199 ..write(name)
173 ..write(isProperty ? ' (property) ' : ' (method) ') 200 ..write(isProperty ? ' (property) ' : ' (method) ')
174 ..write(isFinal ? 'final ' : '') 201 ..write(isFinal ? 'final ' : '')
175 ..write(isStatic ? 'static ' : '') 202 ..write(isStatic ? 'static ' : '')
176 ..write(annotations) 203 ..write(annotations)
177 ..write(']')).toString(); 204 ..write(')')).toString();
178 } 205 }
179 } 206 }
180 207
181 /// Enumeration for declaration kinds (field, property, or method) 208 /// Enumeration for declaration kinds (field, property, or method)
182 class DeclarationKind { 209 class DeclarationKind {
183 final int kind; 210 final int kind;
184 const DeclarationKind(this.kind); 211 const DeclarationKind(this.kind);
185 } 212 }
186 213
187 /// Declaration kind used to denote a raw field. 214 /// Declaration kind used to denote a raw field.
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
237 264
238 265
239 /// A service that converts between [Symbol]s and [String]s. 266 /// A service that converts between [Symbol]s and [String]s.
240 abstract class SymbolConverterService { 267 abstract class SymbolConverterService {
241 /// Returns the name associated with a [symbol]. 268 /// Returns the name associated with a [symbol].
242 String symbolToName(Symbol symbol); 269 String symbolToName(Symbol symbol);
243 270
244 /// Returns the symbol associated with a [name]. 271 /// Returns the symbol associated with a [name].
245 Symbol nameToSymbol(String name); 272 Symbol nameToSymbol(String name);
246 } 273 }
OLDNEW
« no previous file with comments | « pkg/smoke/lib/mirrors.dart ('k') | pkg/smoke/lib/src/common.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698