Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(189)

Unified Diff: pkg/front_end/lib/src/fasta/source/outline_builder.dart

Issue 2695633002: Annotate native methods. (Closed)
Patch Set: Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 b9a8476986aead2d6f5c362720fab9149201face..e61f01551cd31c15bfc34b27e25c61dcd73420e6 100644
--- a/pkg/front_end/lib/src/fasta/source/outline_builder.dart
+++ b/pkg/front_end/lib/src/fasta/source/outline_builder.dart
@@ -49,6 +49,9 @@ import '../operator.dart' show
operatorFromString,
operatorToString;
+import '../quote.dart' show
+ unescapeString;
+
enum MethodBody {
Abstract,
Regular,
@@ -80,6 +83,8 @@ class OutlineBuilder extends UnhandledListener {
final bool isDartLibrary;
+ String nativeMethodName;
+
OutlineBuilder(SourceLibraryBuilder library)
: library = library,
isDartLibrary = library.uri.scheme == "dart";
@@ -240,7 +245,8 @@ class OutlineBuilder extends UnhandledListener {
checkEmpty();
library.addProcedure(metadata, modifiers, returnType, name,
typeVariables, formals, asyncModifier, computeProcedureKind(getOrSet),
- beginToken.charOffset, isTopLevel: true);
+ beginToken.charOffset, nativeMethodName, isTopLevel: true);
+ nativeMethodName = null;
}
@override
@@ -289,7 +295,9 @@ class OutlineBuilder extends UnhandledListener {
isAbstract: bodyKind == MethodBody.Abstract);
List<MetadataBuilder> metadata = pop();
library.addProcedure(metadata, modifiers, returnType, name, typeVariables,
- formals, asyncModifier, kind, beginToken.charOffset, isTopLevel: false);
+ formals, asyncModifier, kind, beginToken.charOffset, nativeMethodName,
+ isTopLevel: false);
+ nativeMethodName = null;
}
@override
@@ -517,7 +525,8 @@ class OutlineBuilder extends UnhandledListener {
var name = pop();
List<MetadataBuilder> metadata = pop();
library.addFactoryMethod(metadata, name, formals, asyncModifier,
- redirectionTarget, beginToken.charOffset);
+ redirectionTarget, beginToken.charOffset, nativeMethodName);
+ nativeMethodName = null;
}
@override
@@ -552,6 +561,7 @@ class OutlineBuilder extends UnhandledListener {
@override
void endMember() {
debugEvent("Member");
+ assert(nativeMethodName == null);
}
@override
@@ -581,7 +591,10 @@ class OutlineBuilder extends UnhandledListener {
Token handleUnrecoverableError(Token token, ErrorKind kind, Map arguments) {
if (isDartLibrary && kind == ErrorKind.ExpectedBlockToSkip) {
Token recover = skipNativeClause(token);
- if (recover != null) return recover;
+ if (recover != null) {
+ nativeMethodName = unescapeString(token.next.value);
+ return recover;
+ }
}
return super.handleUnrecoverableError(token, kind, arguments);
}
« no previous file with comments | « pkg/front_end/lib/src/fasta/loader.dart ('k') | pkg/front_end/lib/src/fasta/source/source_library_builder.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698