Index: lib/codegen/generator.dart |
diff --git a/lib/codegen/generator.dart b/lib/codegen/generator.dart |
index 417e9e7f291739c9222d00108fef18a04c346850..efacaea890a22cd586d70655170f16ae7a943349 100644 |
--- a/lib/codegen/generator.dart |
+++ b/lib/codegen/generator.dart |
@@ -53,18 +53,24 @@ class SmokeCodeGenerator { |
final Map<String, String> _libraryPrefix = {}; |
/// Register that [name] is used as a getter in the code. |
- void addGetter(String name) { _getters.add(name); } |
+ void addGetter(String name) { |
+ _getters.add(name); |
+ } |
/// Register that [name] is used as a setter in the code. |
- void addSetter(String name) { _setters.add(name); } |
+ void addSetter(String name) { |
+ _setters.add(name); |
+ } |
/// Register that [name] might be needed as a symbol. |
- void addSymbol(String name) { _names.add(name); } |
+ void addSymbol(String name) { |
+ _names.add(name); |
+ } |
/// Register that `cls.name` is used as a static method in the code. |
void addStaticMethod(TypeIdentifier cls, String name) { |
- var methods = _staticMethods.putIfAbsent(cls, |
- () => new SplayTreeSet<String>()); |
+ var methods = |
+ _staticMethods.putIfAbsent(cls, () => new SplayTreeSet<String>()); |
_addLibrary(cls.importUrl); |
methods.add(name); |
} |
@@ -102,8 +108,8 @@ class SmokeCodeGenerator { |
'following: a field, a property, or a method.'); |
} |
var kind = isField ? 'FIELD' : isProperty ? 'PROPERTY' : 'METHOD'; |
- _declarations.putIfAbsent(cls, |
- () => new SplayTreeMap<String, _DeclarationCode>()); |
+ _declarations.putIfAbsent( |
+ cls, () => new SplayTreeMap<String, _DeclarationCode>()); |
_addLibrary(cls.importUrl); |
var map = _declarations[cls]; |
@@ -114,8 +120,8 @@ class SmokeCodeGenerator { |
} |
_addLibrary(type.importUrl); |
- var decl = new _DeclarationCode(name, type, kind, isFinal, isStatic, |
- annotations); |
+ var decl = |
+ new _DeclarationCode(name, type, kind, isFinal, isStatic, annotations); |
if (map.containsKey(name) && map[name] != decl) { |
throw new StateError('$type.$name already has a different declaration' |
' (${map[name]} instead of $decl).'); |
@@ -128,8 +134,8 @@ class SmokeCodeGenerator { |
/// member in this class might be intentional and not an error. |
void addEmptyDeclaration(TypeIdentifier type) { |
_addLibrary(type.importUrl); |
- _declarations.putIfAbsent(type, |
- () => new SplayTreeMap<String, _DeclarationCode>()); |
+ _declarations.putIfAbsent( |
+ type, () => new SplayTreeMap<String, _DeclarationCode>()); |
} |
/// Writes to [buffer] a line for each import that is needed by the generated |
@@ -148,12 +154,11 @@ class SmokeCodeGenerator { |
/// superclasses. |
void writeTopLevelDeclarations(StringBuffer buffer) { |
var types = new Set() |
- ..addAll(_parents.keys) |
- ..addAll(_parents.values) |
- ..addAll(_declarations.keys) |
- ..addAll(_declarations.values.expand( |
- (m) => m.values.map((d) => d.type))) |
- ..removeWhere((t) => t.importUrl != null); |
+ ..addAll(_parents.keys) |
+ ..addAll(_parents.values) |
+ ..addAll(_declarations.keys) |
+ ..addAll(_declarations.values.expand((m) => m.values.map((d) => d.type))) |
+ ..removeWhere((t) => t.importUrl != null); |
for (var type in types) { |
buffer.write('abstract class ${type.name} {}'); |
if (type.comment != null) buffer.write(' // ${type.comment}'); |
@@ -190,8 +195,8 @@ class SmokeCodeGenerator { |
args['getters'] = _getters.map((n) => '${_symbol(n)}: (o) => o.$n'); |
} |
if (_setters.isNotEmpty) { |
- args['setters'] = _setters.map( |
- (n) => '${_symbol(n)}: (o, v) { o.$n = v; }'); |
+ args['setters'] = |
+ _setters.map((n) => '${_symbol(n)}: (o, v) { o.$n = v; }'); |
} |
if (_parents.isNotEmpty) { |
@@ -199,7 +204,7 @@ class SmokeCodeGenerator { |
_parents.forEach((child, parent) { |
var parent = _parents[child]; |
parentsMap.add('${child.asCode(_libraryPrefix)}: ' |
- '${parent.asCode(_libraryPrefix)}'); |
+ '${parent.asCode(_libraryPrefix)}'); |
}); |
args['parents'] = parentsMap; |
} |
@@ -208,8 +213,8 @@ class SmokeCodeGenerator { |
var declarations = []; |
_declarations.forEach((type, members) { |
final sb = new StringBuffer() |
- ..write(type.asCode(_libraryPrefix)) |
- ..write(': '); |
+ ..write(type.asCode(_libraryPrefix)) |
+ ..write(': '); |
if (members.isEmpty) { |
sb.write('{}'); |
} else { |
@@ -230,8 +235,8 @@ class SmokeCodeGenerator { |
_staticMethods.forEach((type, members) { |
var className = type.asCode(_libraryPrefix); |
final sb = new StringBuffer() |
- ..write(className) |
- ..write(': '); |
+ ..write(className) |
+ ..write(': '); |
if (members.isEmpty) { |
sb.write('{}'); |
} else { |
@@ -250,8 +255,9 @@ class SmokeCodeGenerator { |
args['names'] = _names.map((n) => "${_symbol(n)}: r'$n'"); |
} |
- buffer..writeln('new StaticConfiguration(') |
- ..write('${spaces}checkedMode: false'); |
+ buffer |
+ ..writeln('new StaticConfiguration(') |
+ ..write('${spaces}checkedMode: false'); |
args.forEach((name, mapContents) { |
buffer.writeln(','); |
@@ -285,8 +291,8 @@ class _DeclarationCode extends ConstExpression { |
this.annotations); |
List<String> get librariesUsed => [] |
- ..addAll(type.librariesUsed) |
- ..addAll(annotations.expand((a) => a.librariesUsed)); |
+ ..addAll(type.librariesUsed) |
+ ..addAll(annotations.expand((a) => a.librariesUsed)); |
String asCode(Map<String, String> libraryPrefixes) { |
var sb = new StringBuffer(); |
@@ -311,8 +317,11 @@ class _DeclarationCode extends ConstExpression { |
String toString() => |
'(decl: $type.$name - $kind, $isFinal, $isStatic, $annotations)'; |
- operator== (other) => other is _DeclarationCode && name == other.name && |
- type == other.type && kind == other.kind && isFinal == other.isFinal && |
+ operator ==(other) => other is _DeclarationCode && |
+ name == other.name && |
+ type == other.type && |
+ kind == other.kind && |
+ isFinal == other.isFinal && |
isStatic == other.isStatic && |
compareLists(annotations, other.annotations); |
int get hashCode => name.hashCode + (31 * type.hashCode); |
@@ -345,8 +354,8 @@ abstract class ConstExpression { |
/// Create an expression of the form `prefix.Constructor(v1, v2, p3: v3)`. |
factory ConstExpression.constructor(String importUrl, String name, |
- List<ConstExpression> positionalArgs, |
- Map<String, ConstExpression> namedArgs) => |
+ List<ConstExpression> positionalArgs, |
+ Map<String, ConstExpression> namedArgs) => |
new ConstructorExpression(importUrl, name, positionalArgs, namedArgs); |
} |
@@ -361,7 +370,7 @@ class CodeAsConstExpression extends ConstExpression { |
String asCode(Map<String, String> libraryPrefixes) => code; |
String toString() => '(code: $code)'; |
- operator== (other) => other is CodeAsConstExpression && code == other.code; |
+ operator ==(other) => other is CodeAsConstExpression && code == other.code; |
int get hashCode => code.hashCode; |
} |
@@ -380,8 +389,9 @@ class TopLevelIdentifier extends ConstExpression { |
} |
String toString() => '(identifier: $importUrl, $name)'; |
- operator== (other) => other is TopLevelIdentifier && name == other.name |
- && importUrl == other.importUrl; |
+ operator ==(other) => other is TopLevelIdentifier && |
+ name == other.name && |
+ importUrl == other.importUrl; |
int get hashCode => 31 * importUrl.hashCode + name.hashCode; |
} |
@@ -391,12 +401,12 @@ class ConstructorExpression extends ConstExpression { |
final String name; |
final List<ConstExpression> positionalArgs; |
final Map<String, ConstExpression> namedArgs; |
- ConstructorExpression(this.importUrl, this.name, this.positionalArgs, |
- this.namedArgs); |
+ ConstructorExpression( |
+ this.importUrl, this.name, this.positionalArgs, this.namedArgs); |
List<String> get librariesUsed => [importUrl] |
- ..addAll(positionalArgs.expand((e) => e.librariesUsed)) |
- ..addAll(namedArgs.values.expand((e) => e.librariesUsed)); |
+ ..addAll(positionalArgs.expand((e) => e.librariesUsed)) |
+ ..addAll(namedArgs.values.expand((e) => e.librariesUsed)); |
String asCode(Map<String, String> libraryPrefixes) { |
var sb = new StringBuffer(); |
@@ -422,14 +432,14 @@ class ConstructorExpression extends ConstExpression { |
} |
String toString() => '(ctor: $importUrl, $name, $positionalArgs, $namedArgs)'; |
- operator== (other) => other is ConstructorExpression && name == other.name |
- && importUrl == other.importUrl && |
+ operator ==(other) => other is ConstructorExpression && |
+ name == other.name && |
+ importUrl == other.importUrl && |
compareLists(positionalArgs, other.positionalArgs) && |
compareMaps(namedArgs, other.namedArgs); |
int get hashCode => 31 * importUrl.hashCode + name.hashCode; |
} |
- |
/// Describes a type identifier, with the library URL where the type is defined. |
// TODO(sigmund): consider adding support for imprecise TypeIdentifiers, which |
// may be used by tools that want to generate code without using the analyzer |
@@ -450,24 +460,26 @@ class TypeIdentifier extends TopLevelIdentifier |
String toString() => '(type-identifier: $importUrl, $name, $comment)'; |
bool operator ==(other) => other is TypeIdentifier && |
- importUrl == other.importUrl && name == other.name && |
+ importUrl == other.importUrl && |
+ name == other.name && |
comment == other.comment; |
int get hashCode => super.hashCode; |
} |
/// Default set of imports added by [SmokeCodeGenerator]. |
const DEFAULT_IMPORTS = const [ |
- "import 'package:smoke/smoke.dart' show Declaration, PROPERTY, METHOD;", |
- "import 'package:smoke/static.dart' show " |
- "useGeneratedCode, StaticConfiguration;", |
- ]; |
+ "import 'package:smoke/smoke.dart' show Declaration, PROPERTY, METHOD;", |
+ "import 'package:smoke/static.dart' show " |
+ "useGeneratedCode, StaticConfiguration;", |
+]; |
_symbol(String name) { |
if (!_publicSymbolPattern.hasMatch(name)) { |
throw new StateError('invalid symbol name: "$name"'); |
} |
return _literalSymbolPattern.hasMatch(name) |
- ? '#$name' : "const Symbol('$name')"; |
+ ? '#$name' |
+ : "const Symbol('$name')"; |
} |
// TODO(sigmund): is this included in some library we can import? I derived the |
@@ -486,8 +498,8 @@ const String _publicIdentifierRE = |
r'(?!' '$_reservedWordRE' r'\b(?!\$))[a-zA-Z$][\w$]*'; |
/// Pattern that matches operators only. |
-final RegExp _literalSymbolPattern = new RegExp( |
- '^(?:$_publicIdentifierRE(?:\$|[.](?!\$)))+?\$'); |
+final RegExp _literalSymbolPattern = |
+ new RegExp('^(?:$_publicIdentifierRE(?:\$|[.](?!\$)))+?\$'); |
/// Operator names allowed as symbols. The name of the oeprators is the same as |
/// the operator itself except for unary minus, where the name is "unary-". |