| Index: sdk/lib/_internal/compiler/implementation/scanner/listener.dart
|
| diff --git a/sdk/lib/_internal/compiler/implementation/scanner/listener.dart b/sdk/lib/_internal/compiler/implementation/scanner/listener.dart
|
| index ad1a0e18174509e249ea1f762dedfb6a0305c21d..c668856a91b242efa1fb4f6b7207f1ab694b5f87 100644
|
| --- a/sdk/lib/_internal/compiler/implementation/scanner/listener.dart
|
| +++ b/sdk/lib/_internal/compiler/implementation/scanner/listener.dart
|
| @@ -163,6 +163,18 @@ class Listener {
|
| void endFunctionTypeAlias(Token typedefKeyword, Token endToken) {
|
| }
|
|
|
| + void beginMixinApplication(Token token) {
|
| + }
|
| +
|
| + void endMixinApplication() {
|
| + }
|
| +
|
| + void beginNamedMixinApplication(Token token) {
|
| + }
|
| +
|
| + void endNamedMixinApplication(Token typedefKeyword, Token endToken) {
|
| + }
|
| +
|
| void beginHide(Token hideKeyword) {
|
| }
|
|
|
| @@ -175,6 +187,12 @@ class Listener {
|
| void endIdentifierList(int count) {
|
| }
|
|
|
| + void beginTypeList(Token token) {
|
| + }
|
| +
|
| + void endTypeList(int count) {
|
| + }
|
| +
|
| void beginIfStatement(Token token) {
|
| }
|
|
|
| @@ -702,6 +720,10 @@ class ElementListener extends Listener {
|
| pushNode(makeNodeList(count, null, null, ","));
|
| }
|
|
|
| + void endTypeList(int count) {
|
| + pushNode(makeNodeList(count, null, null, ","));
|
| + }
|
| +
|
| void endPart(Token partKeyword, Token semicolon) {
|
| StringNode uri = popLiteralString();
|
| addLibraryTag(new Part(partKeyword, uri));
|
| @@ -804,6 +826,24 @@ class ElementListener extends Listener {
|
| rejectBuiltInIdentifier(name);
|
| }
|
|
|
| + void endNamedMixinApplication(Token typedefKeyword, Token endToken) {
|
| + Node mixinApplication = popNode();
|
| + NodeList typeVariables = popNode();
|
| + Identifier name = popNode();
|
| + rejectBuiltInIdentifier(name);
|
| + // TODO(kasperl): Push an element corresponding to the named mixin
|
| + // application instead of rejecting this.
|
| + recoverableError('unsupported mixin application in typedef',
|
| + node: mixinApplication);
|
| + }
|
| +
|
| + void endMixinApplication() {
|
| + NodeList mixins = popNode();
|
| + TypeAnnotation superclass = popNode();
|
| + Modifiers modifiers = popNode();
|
| + pushNode(new MixinApplication(modifiers, superclass, mixins));
|
| + }
|
| +
|
| void handleVoidKeyword(Token token) {
|
| pushNode(new TypeAnnotation(new Identifier(token), null));
|
| }
|
| @@ -1170,6 +1210,14 @@ class NodeListener extends ElementListener {
|
| typedefKeyword, endToken));
|
| }
|
|
|
| + void endNamedMixinApplication(Token typedefKeyword, Token endToken) {
|
| + Node mixinApplication = popNode();
|
| + NodeList typeParameters = popNode();
|
| + Identifier name = popNode();
|
| + pushNode(new NamedMixinApplication(name, typeParameters, mixinApplication,
|
| + typedefKeyword, endToken));
|
| + }
|
| +
|
| void endInterface(int supertypeCount, Token interfaceKeyword,
|
| Token extendsKeyword, Token endToken) {
|
| NodeList body = popNode();
|
|
|