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

Unified Diff: lib/src/js/template.dart

Issue 1484263002: Use destructuring assignments for named parameters (#180) (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Rebased + squashed in 1 commit Created 5 years 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
Index: lib/src/js/template.dart
diff --git a/lib/src/js/template.dart b/lib/src/js/template.dart
index 85a62516ca2874c903ff8b2b16a4d3915af73480..a6af41613cea7872f68e221d475bdf7c8236eddd 100644
--- a/lib/src/js/template.dart
+++ b/lib/src/js/template.dart
@@ -230,8 +230,8 @@ class InstantiatorGeneratorVisitor implements NodeVisitor<Instantiator> {
return (arguments) {
var value = arguments[nameOrPosition];
- Identifier toIdentifier(item) {
- if (item is Identifier) return item;
+ Parameter toIdentifier(item) {
+ if (item is Parameter) return item;
if (item is String) return new Identifier(item);
return error('Interpolated value #$nameOrPosition is not an Identifier'
' or List of Identifiers: $value');
@@ -826,6 +826,36 @@ class InstantiatorGeneratorVisitor implements NodeVisitor<Instantiator> {
Instantiator visitExportClause(ExportClause node) =>
throw new UnimplementedError();
+
+ @override
+ Instantiator visitDestructuredVariable(DestructuredVariable node) {
+ Instantiator makeName = visit(node.name);
+ Instantiator makeStructure = visit(node.structure);
+ Instantiator makeDefaultValue = visit(node.defaultValue);
+ return (arguments) {
+ return new DestructuredVariable(
+ name: makeName(arguments),
+ structure: makeStructure(arguments),
+ defaultValue: makeDefaultValue(arguments));
+ };
+ }
+
+ @override
+ Instantiator visitArrayBindingPattern(ArrayBindingPattern node) {
+ List<Instantiator> makeVars = node.variables.map(this.visit).toList();
+ return (arguments) {
+ return new ArrayBindingPattern(makeVars.map((m) => m(arguments)).toList());
Jennifer Messerly 2015/12/02 20:41:09 long line
ochafik 2015/12/02 21:56:08 Done.
+ };
+ }
+
+ @override
+ Instantiator visitObjectBindingPattern(ObjectBindingPattern node) {
+ List<Instantiator> makeVars = node.variables.map(this.visit).toList();
+ return (arguments) {
+ return new ObjectBindingPattern(
+ makeVars.map((m) => m(arguments)).toList());
+ };
+ }
}
/**

Powered by Google App Engine
This is Rietveld 408576698