| Index: compiler/java/com/google/dart/compiler/resolver/Resolver.java
|
| diff --git a/compiler/java/com/google/dart/compiler/resolver/Resolver.java b/compiler/java/com/google/dart/compiler/resolver/Resolver.java
|
| index c32f7cd679f5babaf556b34167ba7f80fa33600c..6723886ed26823572aa2cc15210654a3d58ec17e 100644
|
| --- a/compiler/java/com/google/dart/compiler/resolver/Resolver.java
|
| +++ b/compiler/java/com/google/dart/compiler/resolver/Resolver.java
|
| @@ -927,8 +927,17 @@ public class Resolver {
|
| visit(x.getArguments());
|
| String name = x.getName() == null ? "" : x.getName().getName();
|
| InterfaceType supertype = ((ClassElement) currentHolder).getSupertype();
|
| - ConstructorElement element = (supertype == null) ?
|
| - null : Elements.lookupConstructor(supertype.getElement(), name);
|
| + ConstructorElement element;
|
| + if (supertype == null) {
|
| + element = null;
|
| + } else {
|
| + ClassElement classElement = supertype.getElement();
|
| + element = Elements.lookupConstructor(classElement, name);
|
| + if (element == null && "".equals(name) && x.getArguments().isEmpty()
|
| + && Elements.needsImplicitDefaultConstructor(classElement)) {
|
| + element = new SyntheticDefaultConstructorElement(null, classElement, typeProvider);
|
| + }
|
| + }
|
| if (element == null) {
|
| onError(x, ResolverErrorCode.CANNOT_RESOLVE_SUPER_CONSTRUCTOR, name);
|
| }
|
| @@ -1163,6 +1172,9 @@ public class Resolver {
|
| }
|
|
|
| case SUPER: {
|
| + if (x.getParent() instanceof DartInitializer) {
|
| + onError(x, ResolverErrorCode.SUPER_METHOD_INVOCATION_IN_CONSTRUCTOR_INITIALIZER);
|
| + }
|
| // Must be a superclass' method or field.
|
| ClassElement classElement = ((SuperElement) target).getClassElement();
|
| InterfaceType type = classElement.getType();
|
|
|