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

Unified Diff: lib/src/codegen/reify_coercions.dart

Issue 1245013005: fixes #259, clone ast before mutation (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: revert dependency_overrides in pubspec Created 5 years, 5 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: lib/src/codegen/reify_coercions.dart
diff --git a/lib/src/codegen/reify_coercions.dart b/lib/src/codegen/reify_coercions.dart
index 0367c695adf0454819c52d81599f7b157116030a..e490b190f3422d741b277e666f69a16cff1d3668 100644
--- a/lib/src/codegen/reify_coercions.dart
+++ b/lib/src/codegen/reify_coercions.dart
@@ -111,37 +111,31 @@ class CoercionReifier extends analyzer.GeneralizingAstVisitor<Object> {
// to discharging the collected definitions.
// Returns the set of new type identifiers added by the reifier
Map<Identifier, NewTypeIdDesc> reify() {
- _library.partsThenLibrary.forEach(generateUnit);
+ _library.partsThenLibrary.forEach(visitCompilationUnit);
return _tm.addedTypes;
}
- void generateUnit(CompilationUnit unit) {
- visitCompilationUnit(unit);
- }
-
@override
Object visitExpression(Expression node) {
var info = CoercionInfo.get(node);
if (info is InferredTypeBase) {
- return _visitInferredTypeBase(info);
+ return _visitInferredTypeBase(info, node);
} else if (info is DownCast) {
- return _visitDownCast(info);
+ return _visitDownCast(info, node);
}
return super.visitExpression(node);
}
///////////////// Private //////////////////////////////////
- Object _visitInferredTypeBase(InferredTypeBase node) {
- var expr = node.node;
+ Object _visitInferredTypeBase(InferredTypeBase node, Expression expr) {
var success = _inferrer.inferExpression(expr, node.type, <String>[]);
assert(success);
expr.visitChildren(this);
return null;
}
- Object _visitDownCast(DownCast node) {
- var expr = node.node;
+ Object _visitDownCast(DownCast node, Expression expr) {
var parent = expr.parent;
expr.visitChildren(this);
Expression newE = _cm.coerceExpression(expr, node.cast);

Powered by Google App Engine
This is Rietveld 408576698