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

Side by Side Diff: sdk/lib/_internal/compiler/implementation/dart_backend/dart_tree_printer.dart

Issue 362343003: dart2dart: Use implicit 'this' when generating Dart code. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Fixed test case Created 6 years, 5 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
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 library dart_tree_printer; 5 library dart_tree_printer;
6 6
7 import 'dart_printer.dart'; 7 import 'dart_printer.dart';
8 import '../tree/tree.dart' as tree; 8 import '../tree/tree.dart' as tree;
9 import '../scanner/scannerlib.dart'; 9 import '../scanner/scannerlib.dart';
10 import '../util/util.dart'; 10 import '../util/util.dart';
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
319 } 319 }
320 result = new tree.Send( 320 result = new tree.Send(
321 receiver, 321 receiver,
322 selector, 322 selector,
323 argList(exp.arguments.map(makeArgument))); 323 argList(exp.arguments.map(makeArgument)));
324 if (callee is Identifier) { 324 if (callee is Identifier) {
325 setElement(result, element, exp); 325 setElement(result, element, exp);
326 } 326 }
327 } else if (exp is CallMethod) { 327 } else if (exp is CallMethod) {
328 precedence = CALLEE; 328 precedence = CALLEE;
329 tree.Node receiver = exp.object is This
330 ? null
331 : makeExp(exp.object, PRIMARY, beginStmt: beginStmt);
329 result = new tree.Send( 332 result = new tree.Send(
330 makeExp(exp.object, PRIMARY, beginStmt: beginStmt), 333 receiver,
331 makeIdentifier(exp.methodName), 334 makeIdentifier(exp.methodName),
332 argList(exp.arguments.map(makeArgument))); 335 argList(exp.arguments.map(makeArgument)));
333 } else if (exp is CallNew) { 336 } else if (exp is CallNew) {
334 precedence = CALLEE; 337 precedence = CALLEE;
335 tree.Node selector = makeName(exp.type.name); 338 tree.Node selector = makeName(exp.type.name);
336 if (exp.type.typeArguments.length > 0) { 339 if (exp.type.typeArguments.length > 0) {
337 selector = new tree.TypeAnnotation( 340 selector = new tree.TypeAnnotation(
338 selector, 341 selector,
339 typeArgList(exp.type.typeArguments.map(makeType))); 342 typeArgList(exp.type.typeArguments.map(makeType)));
340 setType(selector, exp.dartType, exp); 343 setType(selector, exp.dartType, exp);
(...skipping 22 matching lines...) Expand all
363 } else if (exp is Conditional) { 366 } else if (exp is Conditional) {
364 precedence = CONDITIONAL; 367 precedence = CONDITIONAL;
365 result = new tree.Conditional( 368 result = new tree.Conditional(
366 makeExp(exp.condition, LOGICAL_OR, beginStmt: beginStmt), 369 makeExp(exp.condition, LOGICAL_OR, beginStmt: beginStmt),
367 makeExp(exp.thenExpression, EXPRESSION), 370 makeExp(exp.thenExpression, EXPRESSION),
368 makeExp(exp.elseExpression, EXPRESSION), 371 makeExp(exp.elseExpression, EXPRESSION),
369 question, 372 question,
370 colon); 373 colon);
371 } else if (exp is FieldExpression) { 374 } else if (exp is FieldExpression) {
372 precedence = PRIMARY; 375 precedence = PRIMARY;
373 result = new tree.Send( 376 tree.Node receiver = exp.object is This
374 makeExp(exp.object, PRIMARY, beginStmt: beginStmt), 377 ? null
375 makeIdentifier(exp.fieldName)); 378 : makeExp(exp.object, PRIMARY, beginStmt: beginStmt);
379 result = new tree.Send(receiver, makeIdentifier(exp.fieldName));
376 } else if (exp is FunctionExpression) { 380 } else if (exp is FunctionExpression) {
377 precedence = PRIMARY; 381 precedence = PRIMARY;
378 if (beginStmt && exp.name != null) { 382 if (beginStmt && exp.name != null) {
379 needParen = true; // Do not mistake for function declaration. 383 needParen = true; // Do not mistake for function declaration.
380 } 384 }
381 // exp.element can only be null in tests. 385 // exp.element can only be null in tests.
382 tree.Node body = exp.element != null && 386 tree.Node body = exp.element != null &&
383 exp.element.node.body is tree.EmptyStatement 387 exp.element.node.body is tree.EmptyStatement
384 ? exp.element.node.body 388 ? exp.element.node.body
385 : makeFunctionBody(exp.body); 389 : makeFunctionBody(exp.body);
(...skipping 622 matching lines...) Expand 10 before | Expand all | Expand 10 after
1008 printStringChunk(chunk.previous), 1012 printStringChunk(chunk.previous),
1009 node); 1013 node);
1010 } else { 1014 } else {
1011 return node; 1015 return node;
1012 } 1016 }
1013 } 1017 }
1014 return printStringChunk(output.chunk); 1018 return printStringChunk(output.chunk);
1015 } 1019 }
1016 1020
1017 } 1021 }
OLDNEW
« no previous file with comments | « sdk/lib/_internal/compiler/implementation/dart_backend/dart_tree.dart ('k') | tests/language/rewrite_implicit_this_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698