| Index: pkg/front_end/lib/src/fasta/source/outline_builder.dart
|
| diff --git a/pkg/front_end/lib/src/fasta/source/outline_builder.dart b/pkg/front_end/lib/src/fasta/source/outline_builder.dart
|
| index da33884b3704c78b6793e907c6365c1140f16847..4549589d4596b52b14b563dabd06e9a3170f4987 100644
|
| --- a/pkg/front_end/lib/src/fasta/source/outline_builder.dart
|
| +++ b/pkg/front_end/lib/src/fasta/source/outline_builder.dart
|
| @@ -8,13 +8,16 @@ import 'package:kernel/ast.dart' show
|
| AsyncMarker,
|
| ProcedureKind;
|
|
|
| -import 'package:front_end/src/fasta/parser/parser.dart' show
|
| +import '../parser/parser.dart' show
|
| FormalParameterType,
|
| optional;
|
|
|
| -import 'package:front_end/src/fasta/scanner/token.dart' show
|
| +import '../scanner/token.dart' show
|
| Token;
|
|
|
| +import '../util/link.dart' show
|
| + Link;
|
| +
|
| import '../combinator.dart' show
|
| Combinator;
|
|
|
| @@ -34,6 +37,13 @@ import 'unhandled_listener.dart' show
|
| Unhandled,
|
| UnhandledListener;
|
|
|
| +import '../parser/error_kind.dart' show
|
| + ErrorKind;
|
| +
|
| +import '../parser/dart_vm_native.dart' show
|
| + removeNativeClause,
|
| + skipNativeClause;
|
| +
|
| enum MethodBody {
|
| Abstract,
|
| Regular,
|
| @@ -63,7 +73,11 @@ AsyncMarker asyncMarkerFromTokens(Token asyncToken, Token starToken) {
|
| class OutlineBuilder extends UnhandledListener {
|
| final SourceLibraryBuilder library;
|
|
|
| - OutlineBuilder(this.library);
|
| + final bool isDartLibrary;
|
| +
|
| + OutlineBuilder(SourceLibraryBuilder library)
|
| + : library = library,
|
| + isDartLibrary = library.uri.scheme == "dart";
|
|
|
| @override
|
| Uri get uri => library.uri;
|
| @@ -525,6 +539,21 @@ class OutlineBuilder extends UnhandledListener {
|
| }
|
|
|
| @override
|
| + Token handleUnrecoverableError(Token token, ErrorKind kind, Map arguments) {
|
| + if (isDartLibrary && kind == ErrorKind.ExpectedBlockToSkip) {
|
| + Token recover = skipNativeClause(token);
|
| + if (recover != null) return recover;
|
| + }
|
| + return super.handleUnrecoverableError(token, kind, arguments);
|
| + }
|
| +
|
| + @override
|
| + Link<Token> handleMemberName(Link<Token> identifiers) {
|
| + if (!isDartLibrary || identifiers.isEmpty) return identifiers;
|
| + return removeNativeClause(identifiers);
|
| + }
|
| +
|
| + @override
|
| void debugEvent(String name) {
|
| // printEvent(name);
|
| }
|
|
|