| Index: lib/src/codegen/reify_coercions.dart
 | 
| diff --git a/lib/src/codegen/reify_coercions.dart b/lib/src/codegen/reify_coercions.dart
 | 
| index e9b54b06e60b68214eda30440a8f8998e0987c86..cff462edc4d8d0b5a95e7d2f1b521aac52e8ca3c 100644
 | 
| --- a/lib/src/codegen/reify_coercions.dart
 | 
| +++ b/lib/src/codegen/reify_coercions.dart
 | 
| @@ -7,9 +7,10 @@ library dev_compiler.src.codegen.reify_coercions;
 | 
|  import 'package:analyzer/analyzer.dart' as analyzer;
 | 
|  import 'package:analyzer/src/generated/ast.dart';
 | 
|  import 'package:analyzer/src/generated/element.dart';
 | 
| +import 'package:analyzer/src/generated/engine.dart' show AnalysisContext;
 | 
|  import 'package:logging/logging.dart' as logger;
 | 
| -import 'package:source_span/source_span.dart' show SourceFile;
 | 
|  
 | 
| +import 'package:dev_compiler/devc.dart' show AbstractCompiler;
 | 
|  import 'package:dev_compiler/src/checker/rules.dart';
 | 
|  import 'package:dev_compiler/src/info.dart';
 | 
|  import 'package:dev_compiler/src/options.dart' show CompilerOptions;
 | 
| @@ -108,30 +109,34 @@ class _Inference extends DownwardsInference {
 | 
|  // abstract coercion nodes with their dart implementations.
 | 
|  class CoercionReifier extends analyzer.GeneralizingAstVisitor<Object>
 | 
|      with ConversionVisitor<Object> {
 | 
| +  final AnalysisContext _context;
 | 
|    final CoercionManager _cm;
 | 
|    final TypeManager _tm;
 | 
|    final VariableManager _vm;
 | 
|    final LibraryUnit _library;
 | 
| -  SourceFile _file;
 | 
|    bool _skipCoercions = false;
 | 
|    final TypeRules _rules;
 | 
|    final _Inference _inferrer;
 | 
|    final InstrumentedRuntime _runtime;
 | 
|    final CompilerOptions _options;
 | 
|  
 | 
| +  CompilationUnit _unit;
 | 
| +
 | 
|    CoercionReifier._(this._cm, this._tm, this._vm, this._library, this._rules,
 | 
| -      this._inferrer, this._runtime, this._options);
 | 
| +      this._inferrer, this._runtime, this._context, this._options);
 | 
|  
 | 
| -  factory CoercionReifier(
 | 
| -      LibraryUnit library, TypeRules rules, CompilerOptions options,
 | 
| +  factory CoercionReifier(LibraryUnit library, AbstractCompiler compiler,
 | 
|        [InstrumentedRuntime runtime]) {
 | 
|      var vm = new VariableManager();
 | 
|      var tm =
 | 
|          new TypeManager(library.library.element.enclosingElement, vm, runtime);
 | 
| +    var rules = compiler.rules;
 | 
|      var cm = new CoercionManager(vm, tm, rules, runtime);
 | 
|      var inferrer = new _Inference(rules, tm);
 | 
| +    var context = compiler.context;
 | 
| +    var options = compiler.options;
 | 
|      return new CoercionReifier._(
 | 
| -        cm, tm, vm, library, rules, inferrer, runtime, options);
 | 
| +        cm, tm, vm, library, rules, inferrer, runtime, context, options);
 | 
|    }
 | 
|  
 | 
|    // This should be the entry point for this class.  Entering via the
 | 
| @@ -144,21 +149,20 @@ class CoercionReifier extends analyzer.GeneralizingAstVisitor<Object>
 | 
|    }
 | 
|  
 | 
|    void generateUnit(CompilationUnit unit) {
 | 
| -    _file = new SourceFile(unit.element.source.contents.data,
 | 
| -        url: unit.element.source.uri);
 | 
| +    _unit = unit;
 | 
|      visitCompilationUnit(unit);
 | 
| -    _file = null;
 | 
| +    _unit = null;
 | 
|    }
 | 
|  
 | 
|    ///////////////// Private //////////////////////////////////
 | 
|  
 | 
|    String _locationInfo(Expression e) {
 | 
| -    if (_file != null) {
 | 
| +    if (_unit != null) {
 | 
|        final begin = e is AnnotatedNode
 | 
|            ? (e as AnnotatedNode).firstTokenAfterCommentAndMetadata.offset
 | 
|            : e.offset;
 | 
|        if (begin != 0 && e.end > begin) {
 | 
| -        var span = _file.span(begin, e.end);
 | 
| +        var span = utils.createSpan(_context, _unit, begin, e.end);
 | 
|          var s = span.message("Cast");
 | 
|          return s.substring(0, s.indexOf("Cast"));
 | 
|        }
 | 
| 
 |