Index: lib/src/checker/resolver.dart |
diff --git a/lib/src/checker/resolver.dart b/lib/src/checker/resolver.dart |
index c83513bf068ae9c64f83911d2af636c947ebfee0..b4954453288a42725160dd232a8e7a4d27e01c5c 100644 |
--- a/lib/src/checker/resolver.dart |
+++ b/lib/src/checker/resolver.dart |
@@ -154,11 +154,11 @@ class LibraryResolverWithInference extends LibraryResolver { |
var element = cls.element; |
var type = element.type; |
if (seen.contains(type)) return; |
+ seen.add(type); |
for (var supertype in element.allSupertypes) { |
var supertypeClass = typeToDeclaration[supertype]; |
if (supertypeClass != null) visit(supertypeClass); |
} |
- seen.add(type); |
if (_options.inferFromOverrides) { |
// Infer field types from overrides first, otherwise from initializers. |
@@ -466,7 +466,10 @@ class RestrictedResolverVisitor extends ResolverVisitor { |
var element = node.element; |
if (element is FieldFormalParameterElement) { |
if (element.type.isDynamic) { |
- element.type = element.field.type; |
+ // In malformed code, there may be no actual field. |
+ if (element.field != null) { |
+ element.type = element.field.type; |
+ } |
} |
} |
super.visitFieldFormalParameter(node); |