Chromium Code Reviews| Index: dart/frog/leg/native_handler.dart |
| =================================================================== |
| --- dart/frog/leg/native_handler.dart (revision 5068) |
| +++ dart/frog/leg/native_handler.dart (working copy) |
| @@ -40,11 +40,20 @@ |
| || libraryName == 'dart:html') { |
| library.define(new ForeignElement( |
| const SourceString('native'), library), compiler); |
| + library.canUseNative = true; |
| } |
| } |
| +void checkAllowedLibrary(ElementListener listener, Token token) { |
| + LibraryElement currentLibrary = listener.compilationUnitElement.getLibrary(); |
| + if (!currentLibrary.canUseNative) { |
| + listener.unexpected(token); |
|
ahe
2012/03/07 09:31:23
Please use recoverableError.
ngeoffray
2012/03/07 09:35:08
Done.
|
| + } |
| +} |
| + |
| Token handleNativeBlockToSkip(Listener listener, Token token) { |
| - token = token.next; |
| + checkAllowedLibrary(listener, token); |
| + token = token.next; |
| if (token.kind === STRING_TOKEN) { |
| token = token.next; |
| } |
| @@ -56,6 +65,7 @@ |
| } |
| Token handleNativeClassBodyToSkip(Listener listener, Token token) { |
| + checkAllowedLibrary(listener, token); |
| listener.handleIdentifier(token); |
| token = token.next; |
| if (token.kind !== STRING_TOKEN) { |
| @@ -71,6 +81,7 @@ |
| } |
| Token handleNativeClassBody(Listener listener, Token token) { |
| + checkAllowedLibrary(listener, token); |
| token = token.next; |
| if (token.kind !== STRING_TOKEN) { |
| listener.unexpected(token); |
| @@ -81,6 +92,7 @@ |
| } |
| Token handleNativeFunctionBody(ElementListener listener, Token token) { |
| + checkAllowedLibrary(listener, token); |
| Token begin = token; |
| listener.beginExpressionStatement(token); |
| listener.handleIdentifier(token); |