Chromium Code Reviews| Index: dart/frog/leg/resolver.dart |
| diff --git a/dart/frog/leg/resolver.dart b/dart/frog/leg/resolver.dart |
| index 3b3e8a64243d28a4ddc0401f62023f8723c55175..bfe7751d7f48f45383713975099d544b71d7d6f2 100644 |
| --- a/dart/frog/leg/resolver.dart |
| +++ b/dart/frog/leg/resolver.dart |
| @@ -1263,6 +1263,9 @@ class ClassResolverVisitor extends CommonResolverVisitor<Type> { |
| Type supertype = visit(node.superclass); |
| if (supertype !== null && supertype.element.isExtendable()) { |
| classElement.supertype = supertype; |
| + if (isBlackListed(supertype)) { |
| + error(node.superclass, MessageKind.GENERIC, ['cannot extend']); |
|
ahe
2012/03/19 10:51:57
Make real error message.
ahe
2012/03/19 15:31:09
Done.
|
| + } |
| } else if (supertype !== null) { |
| error(node.superclass, MessageKind.TYPE_NAME_EXPECTED); |
| } |
| @@ -1285,6 +1288,9 @@ class ClassResolverVisitor extends CommonResolverVisitor<Type> { |
| if (interfaceType !== null && interfaceType.element.isExtendable()) { |
| classElement.interfaces = |
| classElement.interfaces.prepend(interfaceType); |
| + if (isBlackListed(interfaceType)) { |
| + error(link.head, MessageKind.GENERIC, ['cannot implement']); |
|
ahe
2012/03/19 10:51:57
Ditto.
ahe
2012/03/19 15:31:09
Done.
|
| + } |
| } else { |
| error(link.head, MessageKind.TYPE_NAME_EXPECTED); |
| } |
| @@ -1414,6 +1420,21 @@ class ClassResolverVisitor extends CommonResolverVisitor<Type> { |
| new Block(new NodeList.empty()), |
| null, null, null, null); |
| } |
| + |
| + isBlackListed(Type type) { |
| + LibraryElement lib = classElement.getLibrary(); |
| + return |
| + lib !== compiler.coreLibrary && |
| + lib !== compiler.coreImplLibrary && |
| + lib !== compiler.jsHelperLibrary && |
| + (type.element === compiler.dynamicClass || |
| + type.element === compiler.boolClass || |
| + type.element === compiler.numClass || |
| + type.element === compiler.intClass || |
| + type.element === compiler.doubleClass || |
| + type.element === compiler.stringClass || |
| + type.element === compiler.functionClass); |
| + } |
| } |
| class VariableDefinitionsVisitor extends CommonResolverVisitor<SourceString> { |