Index: pkg/smoke/lib/smoke.dart |
diff --git a/pkg/smoke/lib/smoke.dart b/pkg/smoke/lib/smoke.dart |
index 4815d026a927d22475ec92f0bd88bd61065f9822..3577bf108aa82384f66330e5f1a4d41f21990304 100644 |
--- a/pkg/smoke/lib/smoke.dart |
+++ b/pkg/smoke/lib/smoke.dart |
@@ -84,7 +84,10 @@ 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). |
final bool includeProperties; |
/// Whether to include symbols from the given type and its superclasses |
@@ -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,11 +121,17 @@ 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. |
+ 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. |
Siggi Cherem (dart-lang)
2014/02/21 18:02:58
I was thinking more about it this morning, and I'm
Jennifer Messerly
2014/02/21 23:29:11
Tricky. What you have right now is fairly consiste
Siggi Cherem (dart-lang)
2014/02/22 01:13:28
ok, thanks - I went with keeping them separate and
|
+ bool get isProperty => _kind == PROPERTY; |
+ |
+ /// Whether the symbol is a method. |
+ bool get isMethod => _kind == METHOD; |
/// If this is a property, whether it's read only (final fields or properties |
/// with no setter). |
@@ -134,8 +147,9 @@ class Declaration { |
/// List of annotations in this declaration. |
final List annotations; |
- const Declaration(this.name, this.type, {this.isMethod:false, |
- this.isFinal: false, this.isStatic: false, this.annotations: const []}); |
+ const Declaration(this.name, this.type, {DeclarationKind kind: FIELD, |
+ this.isFinal: false, this.isStatic: false, this.annotations: const []}) |
+ : _kind = kind; |
String toString() { |
return (new StringBuffer() |
@@ -149,6 +163,21 @@ class Declaration { |
} |
} |
+/// Enumeration for declaration kinds (field, property, or method) |
+class DeclarationKind { |
Jennifer Messerly
2014/02/21 23:29:11
if _kind is private, then DeclarationKind should b
Siggi Cherem (dart-lang)
2014/02/22 01:13:28
yeah, I was ambivalent about it. I decided to expo
|
+ 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. |