Index: lib/src/codegen/js_codegen.dart |
diff --git a/lib/src/codegen/js_codegen.dart b/lib/src/codegen/js_codegen.dart |
index fc9137af6d91e2596ddc4aa528ccb6c9f9bc514e..87d29fceef6978e42cd9af85c9c150f20aec3050 100644 |
--- a/lib/src/codegen/js_codegen.dart |
+++ b/lib/src/codegen/js_codegen.dart |
@@ -523,8 +523,8 @@ class JSCodegenVisitor extends GeneralizingAstVisitor with ConversionVisitor { |
// simple code size optimization. |
var parent = t.lookUpGetterInSuperclass('iterator', t.element.library); |
if (parent != null) return null; |
- parent = findSupertype(t, _implementsIterable); |
- if (parent != null) return null; |
+ var parentType = findSupertype(t, _implementsIterable); |
+ if (parentType != null) return null; |
// Otherwise, emit the adapter method, which wraps the Dart iterator in |
// an ES6 iterator. |
@@ -1139,7 +1139,7 @@ class JSCodegenVisitor extends GeneralizingAstVisitor with ConversionVisitor { |
// Get the original declaring element. If we had a property accessor, this |
// indirects back to a (possibly synthetic) field. |
var element = accessor; |
- if (element is PropertyAccessorElement) element = accessor.variable; |
+ if (accessor is PropertyAccessorElement) element = accessor.variable; |
_loader.declareBeforeUse(element); |
@@ -1149,7 +1149,8 @@ class JSCodegenVisitor extends GeneralizingAstVisitor with ConversionVisitor { |
if (element is ClassElement || |
element is DynamicElementImpl || |
element is FunctionTypeAliasElement) { |
- return _emitTypeName(fillDynamicTypeArgs(element.type, types)); |
+ return _emitTypeName( |
+ fillDynamicTypeArgs((element as dynamic).type, types)); |
} |
// library member |
@@ -1753,8 +1754,9 @@ class JSCodegenVisitor extends GeneralizingAstVisitor with ConversionVisitor { |
// TODO(jmesserly): we'll likely need something that can handle a wider |
// variety of types, especially when we get to JS interop. |
var args = expr.argumentList.arguments; |
- if (args.isNotEmpty && args.first is SimpleStringLiteral) { |
- var types = args.first.stringValue; |
+ var first = args.isNotEmpty ? args.first : null; |
+ if (first is SimpleStringLiteral) { |
+ var types = first.stringValue; |
if (!types.split('|').contains('Null')) { |
return true; |
} |
@@ -2059,7 +2061,9 @@ class JSCodegenVisitor extends GeneralizingAstVisitor with ConversionVisitor { |
/// Shared code for [PrefixedIdentifier] and [PropertyAccess]. |
JS.Expression _emitGet(Expression target, SimpleIdentifier memberId) { |
var member = memberId.staticElement; |
- if (member is PropertyAccessorElement) member = member.variable; |
+ if (member is PropertyAccessorElement) { |
+ member = (member as PropertyAccessorElement).variable; |
+ } |
bool isStatic = member is ClassMemberElement && member.isStatic; |
if (isStatic) { |
_loader.declareBeforeUse(member); |
@@ -2246,7 +2250,7 @@ class JSCodegenVisitor extends GeneralizingAstVisitor with ConversionVisitor { |
} |
JS.Statement _statement(Iterable stmts) { |
- var s = stmts is List ? stmts : new List<JS.Statement>.from(stmts); |
+ List s = stmts is List ? stmts : new List<JS.Statement>.from(stmts); |
// TODO(jmesserly): empty block singleton? |
if (s.length == 0) return new JS.Block([]); |
if (s.length == 1) return s[0]; |