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

Unified Diff: lib/src/codegen/js_codegen.dart

Issue 1085723002: fixes for angular hello: String + and disable broken arg parsing (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Created 5 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: lib/src/codegen/js_codegen.dart
diff --git a/lib/src/codegen/js_codegen.dart b/lib/src/codegen/js_codegen.dart
index d7c1cc4c58a24725ce6ef624ae066aafd44c4e35..bb434477e1d35dbb53cc0be6f3970d6449e2579a 100644
--- a/lib/src/codegen/js_codegen.dart
+++ b/lib/src/codegen/js_codegen.dart
@@ -1447,13 +1447,12 @@ class JSCodegenVisitor extends GeneralizingAstVisitor with ConversionVisitor {
/// "extension methods". This allows types to be extended without adding
/// extensions directly on the prototype.
bool _isJSBuiltinType(DartType t) =>
- rules.isNumType(t) || rules.isStringType(t) || rules.isBoolType(t);
+ typeIsPrimitiveInJS(t) || rules.isStringType(t);
- bool typeIsPrimitiveInJS(DartType t) => !rules.isDynamic(t) &&
- (rules.isIntType(t) ||
- rules.isDoubleType(t) ||
- rules.isBoolType(t) ||
- rules.isNumType(t));
+ bool typeIsPrimitiveInJS(DartType t) => (rules.isIntType(t) ||
Jacob 2015/04/13 23:23:16 was !rules.isDynamic(t) never needed?
Jennifer Messerly 2015/04/14 17:44:02 yeah, it didn't make sense to me (how can int/doub
+ rules.isDoubleType(t) ||
+ rules.isBoolType(t) ||
+ rules.isNumType(t));
bool typeIsNonNullablePrimitiveInJS(DartType t) =>
typeIsPrimitiveInJS(t) && rules.isNonNullableType(t);
@@ -1486,7 +1485,7 @@ class JSCodegenVisitor extends GeneralizingAstVisitor with ConversionVisitor {
} else if (expr is PostfixExpression) {
type = getStaticType(expr.operand);
}
- if (type != null && typeIsPrimitiveInJS(type)) {
+ if (type != null && _isJSBuiltinType(type)) {
return true;
}
if (expr is MethodInvocation) {
@@ -1544,7 +1543,9 @@ class JSCodegenVisitor extends GeneralizingAstVisitor with ConversionVisitor {
return js.call(code, [_visit(left), _visit(right)]);
}
- if (binaryOperationIsPrimitive(leftType, rightType)) {
+ if (binaryOperationIsPrimitive(leftType, rightType) ||
+ rules.isStringType(leftType) && op.type == TokenType.PLUS) {
+
// special cases where we inline the operation
// these values are assumed to be non-null (determined by the checker)
// TODO(jmesserly): it would be nice to just inline the method from core,

Powered by Google App Engine
This is Rietveld 408576698