Chromium Code Reviews| 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..f9bd17618db11285c38675d1db8eea22216f4293 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.ERROR); |
|
Johnni Winther
2012/12/04 13:13:21
Should this be Diagnostic.INFO?
ahe
2012/12/05 08:04:21
Done.
|
| + } |
| 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()) { |