Index: pkg/front_end/lib/src/fasta/kernel/body_builder.dart |
diff --git a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart |
index cb1c09b6b3e6d6c1f19f7fc3aaefe4c3064e9c5d..a9bf21ef3f9d2f0b26b8040ab019023be09cf853 100644 |
--- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart |
+++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart |
@@ -85,7 +85,7 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { |
final Scope enclosingScope; |
- final bool isDartLibrary; |
+ final bool enableNative; |
@override |
final Uri uri; |
@@ -152,7 +152,7 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { |
{this.fieldDependencies}) |
: enclosingScope = scope, |
library = library, |
- isDartLibrary = library.uri.scheme == "dart", |
+ enableNative = (library.uri.scheme == "dart" || library.isPatch), |
needsImplicitSuperInitializer = |
coreTypes.objectClass != classBuilder?.cls, |
typePromoter = _typeInferrer.typePromoter, |
@@ -875,10 +875,14 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { |
return new UnresolvedAccessor(this, n, token); |
} |
return new ThisPropertyAccessor(this, token, n, null, null); |
- } else if (isDartLibrary && |
- name == "main" && |
- library.uri.path == "_builtin" && |
- member?.name == "_getMainClosure") { |
+ } else if ( |
+ // Optimization, if [enableNative] is false, this can't be |
+ // dart:_builtin. |
+ enableNative && |
+ name == "main" && |
+ library.uri.scheme == "dart" && |
+ library.uri.path == "_builtin" && |
+ member?.name == "_getMainClosure") { |
// TODO(ahe): https://github.com/dart-lang/sdk/issues/28989 |
return new KernelNullLiteral()..fileOffset = offsetForToken(token); |
} else { |
@@ -2567,7 +2571,7 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper { |
@override |
Token handleUnrecoverableError(Token token, FastaMessage message) { |
- if (isDartLibrary && message.code == codeExpectedFunctionBody) { |
+ if (enableNative && message.code == codeExpectedFunctionBody) { |
Token recover = library.loader.target.skipNativeClause(token); |
if (recover != null) return recover; |
} else if (message.code == codeExpectedButGot) { |