| Index: dart/sdk/lib/_internal/compiler/implementation/resolution/members.dart
|
| diff --git a/dart/sdk/lib/_internal/compiler/implementation/resolution/members.dart b/dart/sdk/lib/_internal/compiler/implementation/resolution/members.dart
|
| index 8c2225a0c34fc77a930af834283ab961650332a2..d80c72c8c7a47c1904a4f26c3c235c8f5cbfc8fc 100644
|
| --- a/dart/sdk/lib/_internal/compiler/implementation/resolution/members.dart
|
| +++ b/dart/sdk/lib/_internal/compiler/implementation/resolution/members.dart
|
| @@ -2012,13 +2012,22 @@ class ResolverVisitor extends CommonResolverVisitor<Element> {
|
| }
|
|
|
| void handleRedirectingFactoryBody(Return node) {
|
| + if (!enclosingElement.isFactoryConstructor()) {
|
| + compiler.reportMessage(
|
| + compiler.spanFromNode(node),
|
| + MessageKind.FACTORY_REDIRECTION_IN_NON_FACTORY.error([]),
|
| + Diagnostic.ERROR);
|
| + compiler.reportMessage(
|
| + compiler.spanFromElement(enclosingElement),
|
| + MessageKind.MISSING_FACTORY_KEYWORD.error([]),
|
| + Diagnostic.INFO);
|
| + }
|
| Element redirectionTarget = resolveRedirectingFactory(node);
|
| var type = mapping.getType(node.expression);
|
| if (type is InterfaceType && !type.isRaw) {
|
| unimplemented(node.expression, 'type arguments on redirecting factory');
|
| }
|
| useElement(node.expression, redirectionTarget);
|
| - assert(invariant(node, enclosingElement.isFactoryConstructor()));
|
| FunctionElement constructor = enclosingElement;
|
| if (constructor.modifiers.isConst() &&
|
| !redirectionTarget.modifiers.isConst()) {
|
|
|