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

Unified Diff: sdk/lib/_internal/compiler/implementation/patch_parser.dart

Issue 266193004: Clean patch implementation. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Updated cf. comments. Created 6 years, 7 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: sdk/lib/_internal/compiler/implementation/patch_parser.dart
diff --git a/sdk/lib/_internal/compiler/implementation/patch_parser.dart b/sdk/lib/_internal/compiler/implementation/patch_parser.dart
index 2a5a6c1d119b3db6b3c52b43c337dbc510dc07ac..0b14e3a2e97207fdc475d30965d97a76c831e50d 100644
--- a/sdk/lib/_internal/compiler/implementation/patch_parser.dart
+++ b/sdk/lib/_internal/compiler/implementation/patch_parser.dart
@@ -123,6 +123,7 @@ import "elements/elements.dart";
import "elements/modelx.dart"
show LibraryElementX,
MetadataAnnotationX,
+ ClassElementX,
FunctionElementX;
import 'util/util.dart';
@@ -441,20 +442,18 @@ void tryPatchClass(leg.DiagnosticListener listener,
}
void patchClass(leg.DiagnosticListener listener,
- ClassElement origin,
- ClassElement patch) {
+ ClassElementX origin,
+ ClassElementX patch) {
if (origin.isPatched) {
listener.internalError(origin,
"Patching the same class more than once.");
}
- // TODO(johnniwinther): Change to functions on the ElementX class.
- origin.patch = patch;
- patch.origin = origin;
+ origin.applyPatch(patch);
}
void tryPatchGetter(leg.DiagnosticListener listener,
- Element origin,
- FunctionElement patch) {
+ Element origin,
+ FunctionElement patch) {
if (!origin.isAbstractField()) {
listener.reportError(
origin, leg.MessageKind.PATCH_NON_GETTER, {'name': origin.name});
@@ -515,8 +514,8 @@ void tryPatchConstructor(leg.DiagnosticListener listener,
}
void tryPatchFunction(leg.DiagnosticListener listener,
- Element origin,
- FunctionElement patch) {
+ Element origin,
+ FunctionElement patch) {
if (!origin.isFunction()) {
listener.reportError(
origin,
@@ -530,8 +529,8 @@ void tryPatchFunction(leg.DiagnosticListener listener,
}
void patchFunction(leg.DiagnosticListener listener,
- FunctionElementX origin,
- FunctionElementX patch) {
+ FunctionElementX origin,
+ FunctionElementX patch) {
if (!origin.modifiers.isExternal()) {
listener.reportError(origin, leg.MessageKind.PATCH_NON_EXTERNAL);
listener.reportInfo(
@@ -547,10 +546,7 @@ void patchFunction(leg.DiagnosticListener listener,
listener.internalError(origin,
"Trying to patch an already compiled function.");
}
- // Don't just assign the patch field. This also updates the cachedNode.
- // TODO(johnniwinther): Change to functions on the ElementX class.
- origin.setPatch(patch);
- patch.origin = origin;
+ origin.applyPatch(patch);
}
// TODO(johnniwinther): Add unittest when patch is (real) metadata.

Powered by Google App Engine
This is Rietveld 408576698