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

Unified Diff: pkg/smoke/lib/smoke.dart

Issue 173473002: Adapting observe to use smoke (this is built on top of the previous change that (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/smoke/lib/mirrors.dart ('k') | pkg/smoke/lib/static.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/smoke/lib/smoke.dart
diff --git a/pkg/smoke/lib/smoke.dart b/pkg/smoke/lib/smoke.dart
index 4815d026a927d22475ec92f0bd88bd61065f9822..fe34ddd3fe2cf7c4e63d4873cee2d5e56917f0c0 100644
--- a/pkg/smoke/lib/smoke.dart
+++ b/pkg/smoke/lib/smoke.dart
@@ -84,15 +84,18 @@ Symbol nameToSymbol(String name) =>
/// hierarchy. For now only public instance symbols can be queried (no private,
/// no static).
class QueryOptions {
- /// Whether to include fields, getters, and setters.
+ /// Whether to include fields (default is true).
+ final bool includeFields;
+
+ /// Whether to include getters and setters (default is true). Note that to
+ /// include fields you also need to enable [includeFields].
final bool includeProperties;
/// Whether to include symbols from the given type and its superclasses
/// (except [Object]).
final bool includeInherited;
- /// Whether to include final fields.
- // TODO(sigmund): should this exclude getter-only properties too?
+ /// Whether to include final fields and getter-only properties.
final bool excludeFinal;
/// Whether to include methods (default is false).
@@ -103,8 +106,12 @@ class QueryOptions {
/// included.
final List withAnnotations;
- const QueryOptions({this.includeProperties: true, this.includeInherited: true,
- this.excludeFinal: false, this.includeMethods: false,
+ const QueryOptions({
+ this.includeFields: true,
+ this.includeProperties: true,
+ this.includeInherited: true,
+ this.excludeFinal: false,
+ this.includeMethods: false,
this.withAnnotations: null});
}
@@ -114,18 +121,24 @@ class Declaration {
/// Name of the property or method
final Symbol name;
- /// Whether the symbol is a property (either this or [isMethod] is true).
- bool get isProperty => !isMethod;
+ /// Kind of declaration (field, property, or method).
+ final DeclarationKind kind;
+
+ /// Whether the symbol is a field (and not a getter/setter property).
+ bool get isField => kind == FIELD;
- /// Whether the symbol is a method (either this or [isProperty] is true)
- final bool isMethod;
+ /// Whether the symbol is a getter/setter and not a field.
+ bool get isProperty => kind == PROPERTY;
- /// If this is a property, whether it's read only (final fields or properties
- /// with no setter).
+ /// Whether the symbol is a method.
+ bool get isMethod => kind == METHOD;
+
+ /// For fields, whether they are final, for properties, whether they are
+ /// read-only (they have no setter).
final bool isFinal;
- /// If this is a property, it's declared type (including dynamic if it's not
- /// declared). For methods, the returned type.
+ /// If this is a field or property, it's declared type (including dynamic if
+ /// it's not declared). For methods, the returned type.
final Type type;
/// Whether this symbol is static.
@@ -134,7 +147,7 @@ class Declaration {
/// List of annotations in this declaration.
final List annotations;
- const Declaration(this.name, this.type, {this.isMethod:false,
+ const Declaration(this.name, this.type, {this.kind: FIELD,
this.isFinal: false, this.isStatic: false, this.annotations: const []});
String toString() {
@@ -149,6 +162,21 @@ class Declaration {
}
}
+/// Enumeration for declaration kinds (field, property, or method)
+class DeclarationKind {
+ final int kind;
+ const DeclarationKind(this.kind);
+}
+
+/// Declaration kind used to denote a raw field.
+const FIELD = const DeclarationKind(0);
+
+/// Declaration kind used to denote a getter/setter.
+const PROPERTY = const DeclarationKind(1);
+
+/// Declaration kind used to denote a method.
+const METHOD = const DeclarationKind(2);
+
/// A service that provides a way to implement simple operations on objects like
/// read, write, and invoke.
« no previous file with comments | « pkg/smoke/lib/mirrors.dart ('k') | pkg/smoke/lib/static.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698