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

Side by Side Diff: pkg/fasta/lib/src/kernel/body_builder.dart

Issue 2639903005: Apply toValue conversion on assert messages. (Closed)
Patch Set: Created 3 years, 11 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
« no previous file with comments | « no previous file | pkg/fasta/test/language.status » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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 fasta.body_builder; 5 library fasta.body_builder;
6 6
7 import 'package:dart_parser/src/parser.dart' show 7 import 'package:dart_parser/src/parser.dart' show
8 FormalParameterType, 8 FormalParameterType,
9 optional; 9 optional;
10 10
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 void push(Object node) { 162 void push(Object node) {
163 isFirstIdentifier = false; 163 isFirstIdentifier = false;
164 inInitializer = false; 164 inInitializer = false;
165 super.push(node); 165 super.push(node);
166 } 166 }
167 167
168 Expression popForValue() => toValue(pop()); 168 Expression popForValue() => toValue(pop());
169 169
170 Expression popForEffect() => toEffect(pop()); 170 Expression popForEffect() => toEffect(pop());
171 171
172 Expression popForValueIfNotNull(Object value) {
173 return value == null ? null : popForValue();
174 }
175
172 @override 176 @override
173 Expression toValue(Object node) { 177 Expression toValue(Object node) {
174 if (node is UnresolvedIdentifier) { 178 if (node is UnresolvedIdentifier) {
175 return throwNoSuchMethodError(node.name.name, new Arguments.empty(), 179 return throwNoSuchMethodError(node.name.name, new Arguments.empty(),
176 node.fileOffset, isGetter: true); 180 node.fileOffset, isGetter: true);
177 } else if (node is BuilderAccessor) { 181 } else if (node is BuilderAccessor) {
178 return node.buildSimpleRead(); 182 return node.buildSimpleRead();
179 } else if (node is TypeVariableBuilder) { 183 } else if (node is TypeVariableBuilder) {
180 TypeParameterType type = node.buildTypesWithBuiltArguments(null); 184 TypeParameterType type = node.buildTypesWithBuiltArguments(null);
181 if (!isInstanceContext && type.parameter.parent is Class) { 185 if (!isInstanceContext && type.parameter.parent is Class) {
(...skipping 1722 matching lines...) Expand 10 before | Expand all | Expand 10 after
1904 @override 1908 @override
1905 void handleEmptyStatement(Token token) { 1909 void handleEmptyStatement(Token token) {
1906 debugEvent("EmptyStatement"); 1910 debugEvent("EmptyStatement");
1907 push(new EmptyStatement()); 1911 push(new EmptyStatement());
1908 } 1912 }
1909 1913
1910 @override 1914 @override
1911 void handleAssertStatement( 1915 void handleAssertStatement(
1912 Token assertKeyword, Token commaToken, Token semicolonToken) { 1916 Token assertKeyword, Token commaToken, Token semicolonToken) {
1913 debugEvent("AssertStatement"); 1917 debugEvent("AssertStatement");
1914 Expression message = popIfNotNull(commaToken); 1918 Expression message = popForValueIfNotNull(commaToken);
1915 Expression condition = popForValue(); 1919 Expression condition = popForValue();
1916 push(new AssertStatement(condition, message)); 1920 push(new AssertStatement(condition, message));
1917 } 1921 }
1918 1922
1919 @override 1923 @override
1920 void endYieldStatement(Token yieldToken, Token starToken, Token endToken) { 1924 void endYieldStatement(Token yieldToken, Token starToken, Token endToken) {
1921 debugEvent("YieldStatement"); 1925 debugEvent("YieldStatement");
1922 push(new YieldStatement(popForValue(), isYieldStar: starToken != null)); 1926 push(new YieldStatement(popForValue(), isYieldStar: starToken != null));
1923 } 1927 }
1924 1928
(...skipping 715 matching lines...) Expand 10 before | Expand all | Expand 10 after
2640 } else if (node is TypeDeclarationBuilder) { 2644 } else if (node is TypeDeclarationBuilder) {
2641 return node.name; 2645 return node.name;
2642 } else if (node is PrefixBuilder) { 2646 } else if (node is PrefixBuilder) {
2643 return node.name; 2647 return node.name;
2644 } else if (node is ThisPropertyAccessor) { 2648 } else if (node is ThisPropertyAccessor) {
2645 return node.name.name; 2649 return node.name.name;
2646 } else { 2650 } else {
2647 return internalError("Unhandled: ${node.runtimeType}"); 2651 return internalError("Unhandled: ${node.runtimeType}");
2648 } 2652 }
2649 } 2653 }
OLDNEW
« no previous file with comments | « no previous file | pkg/fasta/test/language.status » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698