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

Side by Side Diff: pkg/dev_compiler/lib/src/compiler/code_generator.dart

Issue 2568313002: Implement messages in assert() in dev_compiler. (Closed)
Patch Set: Created 4 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 2
3 // for details. All rights reserved. Use of this source code is governed by a 3 // for details. All rights reserved. Use of this source code is governed by a
4 // BSD-style license that can be found in the LICENSE file. 4 // BSD-style license that can be found in the LICENSE file.
5 5
6 import 'dart:collection' show HashMap, HashSet; 6 import 'dart:collection' show HashMap, HashSet;
7 import 'dart:math' show min, max; 7 import 'dart:math' show min, max;
8 8
9 import 'package:analyzer/analyzer.dart' hide ConstantEvaluator; 9 import 'package:analyzer/analyzer.dart' hide ConstantEvaluator;
10 import 'package:analyzer/dart/ast/ast.dart'; 10 import 'package:analyzer/dart/ast/ast.dart';
(...skipping 3801 matching lines...) Expand 10 before | Expand all | Expand 10 after
3812 3812
3813 @override 3813 @override
3814 JS.Statement visitExpressionStatement(ExpressionStatement node) => 3814 JS.Statement visitExpressionStatement(ExpressionStatement node) =>
3815 _visit(node.expression).toStatement(); 3815 _visit(node.expression).toStatement();
3816 3816
3817 @override 3817 @override
3818 JS.EmptyStatement visitEmptyStatement(EmptyStatement node) => 3818 JS.EmptyStatement visitEmptyStatement(EmptyStatement node) =>
3819 new JS.EmptyStatement(); 3819 new JS.EmptyStatement();
3820 3820
3821 @override 3821 @override
3822 JS.Statement visitAssertStatement(AssertStatement node) => 3822 JS.Statement visitAssertStatement(AssertStatement node) {
3823 // TODO(jmesserly): only emit in checked mode. 3823 // TODO(jmesserly): only emit in checked mode.
3824 _callHelperStatement('assert(#);', _visit(node.condition)); 3824 if (node.message != null) {
3825 return _callHelperStatement('assertMessage(#, () => #);',
Jennifer Messerly 2016/12/12 22:36:01 i'd prefer this to be an optional parameter to dar
Bob Nystrom 2016/12/13 19:29:51 Done. I wanted to distinguish between an explicit
3826 [_visit(node.condition), _visit(node.message)]);
3827 }
3828
3829 return _callHelperStatement('assert(#);', _visit(node.condition));
3830 }
3825 3831
3826 @override 3832 @override
3827 JS.Statement visitReturnStatement(ReturnStatement node) { 3833 JS.Statement visitReturnStatement(ReturnStatement node) {
3828 var e = node.expression; 3834 var e = node.expression;
3829 if (e == null) return new JS.Return(); 3835 if (e == null) return new JS.Return();
3830 return (_visit(e) as JS.Expression).toReturn(); 3836 return (_visit(e) as JS.Expression).toReturn();
3831 } 3837 }
3832 3838
3833 @override 3839 @override
3834 JS.Statement visitYieldStatement(YieldStatement node) { 3840 JS.Statement visitYieldStatement(YieldStatement node) {
(...skipping 1975 matching lines...) Expand 10 before | Expand all | Expand 10 after
5810 if (targetIdentifier.staticElement is! PrefixElement) return false; 5816 if (targetIdentifier.staticElement is! PrefixElement) return false;
5811 var prefix = targetIdentifier.staticElement as PrefixElement; 5817 var prefix = targetIdentifier.staticElement as PrefixElement;
5812 5818
5813 // The library the prefix is referring to must come from a deferred import. 5819 // The library the prefix is referring to must come from a deferred import.
5814 var containingLibrary = resolutionMap 5820 var containingLibrary = resolutionMap
5815 .elementDeclaredByCompilationUnit(target.root as CompilationUnit) 5821 .elementDeclaredByCompilationUnit(target.root as CompilationUnit)
5816 .library; 5822 .library;
5817 var imports = containingLibrary.getImportsWithPrefix(prefix); 5823 var imports = containingLibrary.getImportsWithPrefix(prefix);
5818 return imports.length == 1 && imports[0].isDeferred; 5824 return imports.length == 1 && imports[0].isDeferred;
5819 } 5825 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698