Index: pkg/front_end/lib/src/fasta/source/diet_listener.dart |
diff --git a/pkg/front_end/lib/src/fasta/source/diet_listener.dart b/pkg/front_end/lib/src/fasta/source/diet_listener.dart |
index ef900d29806d4829d4d0c6f1edb2520bb0564112..65ec88afe079858db31540369521b3270a6eddc5 100644 |
--- a/pkg/front_end/lib/src/fasta/source/diet_listener.dart |
+++ b/pkg/front_end/lib/src/fasta/source/diet_listener.dart |
@@ -22,7 +22,8 @@ import '../parser/parser.dart' show MemberKind, Parser, optional; |
import '../../scanner/token.dart' show BeginToken, Token; |
-import '../parser/dart_vm_native.dart' show removeNativeClause; |
+import '../parser/native_support.dart' |
+ show removeNativeClause, skipNativeClause; |
import '../util/link.dart' show Link; |
@@ -45,6 +46,8 @@ class DietListener extends StackListener { |
final bool enableNative; |
+ final bool stringExpectedAfterNative; |
+ |
final TypeInferenceEngine typeInferenceEngine; |
ClassBuilder currentClass; |
@@ -61,7 +64,10 @@ class DietListener extends StackListener { |
: library = library, |
uri = library.fileUri, |
memberScope = library.scope, |
- enableNative = library.loader.target.enableNative(library); |
+ enableNative = |
+ library.loader.target.backendTarget.enableNative(library.uri), |
+ stringExpectedAfterNative = |
+ library.loader.target.backendTarget.nativeExtensionExpectsString; |
void discard(int n) { |
for (int i = 0; i < n; i++) { |
@@ -511,7 +517,7 @@ class DietListener extends StackListener { |
@override |
Token handleUnrecoverableError(Token token, FastaMessage message) { |
if (enableNative && message.code == codeExpectedBlockToSkip) { |
- Token recover = library.loader.target.skipNativeClause(token); |
+ Token recover = skipNativeClause(token, stringExpectedAfterNative); |
if (recover != null) return recover; |
} |
return super.handleUnrecoverableError(token, message); |
@@ -520,7 +526,7 @@ class DietListener extends StackListener { |
@override |
Link<Token> handleMemberName(Link<Token> identifiers) { |
if (!enableNative || identifiers.isEmpty) return identifiers; |
- return removeNativeClause(identifiers); |
+ return removeNativeClause(identifiers, stringExpectedAfterNative); |
} |
AsyncMarker getAsyncMarker(StackListener listener) => listener.pop(); |