| Index: dart/frog/leg/scanner/listener.dart
|
| diff --git a/dart/frog/leg/scanner/listener.dart b/dart/frog/leg/scanner/listener.dart
|
| index 41563d300d5efc94af0bfc58fa650ab6aa2f31ad..55904511798dcff819328d9f996d109b052f7ef2 100644
|
| --- a/dart/frog/leg/scanner/listener.dart
|
| +++ b/dart/frog/leg/scanner/listener.dart
|
| @@ -456,13 +456,22 @@ class ElementListener extends Listener {
|
| final CompilationUnitElement compilationUnitElement;
|
|
|
| Link<Node> nodes = const EmptyLink<Node>();
|
| - Link<Element> topLevelElements = const EmptyLink<Element>();
|
|
|
| ElementListener(Canceler this.canceler,
|
| CompilationUnitElement this.compilationUnitElement);
|
|
|
| void endLibraryTag(bool hasPrefix, Token beginToken, Token endToken) {
|
| - canceler.cancel("library tags are not implemented", token: beginToken);
|
| + LiteralString prefix = null;
|
| + Identifier argumentName = null;
|
| + if (hasPrefix) {
|
| + prefix = popNode();
|
| + argumentName = popNode();
|
| + }
|
| + LiteralString firstArgument = popNode();
|
| + Identifier tag = popNode();
|
| + compilationUnitElement.addTag(new ScriptTag(tag, firstArgument,
|
| + argumentName, prefix,
|
| + beginToken, endToken));
|
| }
|
|
|
| void endClassDeclaration(int interfacesCount, Token beginToken,
|
| @@ -623,7 +632,7 @@ class ElementListener extends Listener {
|
| }
|
|
|
| void pushElement(Element element) {
|
| - topLevelElements = topLevelElements.prepend(element);
|
| + compilationUnitElement.addMember(element, canceler);
|
| }
|
|
|
| void pushNode(Node node) {
|
| @@ -662,6 +671,10 @@ class ElementListener extends Listener {
|
| (delimiter === null) ? null : new SourceString(delimiter);
|
| return new NodeList(beginToken, nodes, endToken, sourceDelimiter);
|
| }
|
| +
|
| + void handleLiteralString(Token token) {
|
| + pushNode(new LiteralString(token));
|
| + }
|
| }
|
|
|
| class NodeListener extends ElementListener {
|
| @@ -691,19 +704,6 @@ class NodeListener extends ElementListener {
|
| typedefKeyword, endToken));
|
| }
|
|
|
| - void endLibraryTag(bool hasPrefix, Token beginToken, Token endToken) {
|
| - LiteralString prefix = null;
|
| - Identifier argumentName = null;
|
| - if (hasPrefix) {
|
| - prefix = popNode();
|
| - argumentName = popNode();
|
| - }
|
| - LiteralString firstArgument = popNode();
|
| - Identifier tag = popNode();
|
| - pushNode(new ScriptTag(tag, firstArgument, argumentName, prefix,
|
| - beginToken, endToken));
|
| - }
|
| -
|
| void endInterface(int supertypeCount, Token interfaceKeyword,
|
| Token extendsKeyword, Token endToken) {
|
| NodeList body = popNode();
|
| @@ -788,10 +788,6 @@ class NodeListener extends ElementListener {
|
| pushNode(new LiteralBool(token, (t, e) => handleOnError(t, e)));
|
| }
|
|
|
| - void handleLiteralString(Token token) {
|
| - pushNode(new LiteralString(token));
|
| - }
|
| -
|
| void handleLiteralNull(Token token) {
|
| pushNode(new LiteralNull(token));
|
| }
|
|
|