text: // Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
  // for details. All rights reserved. Use of this source code is governed by a
  // BSD-style license that can be found in the LICENSE file.
  
  // While it's not (currently) necessary, add some noise here to push down token
  // positions in this file compared to the file regress_34841_lib.dart.
  // This is to ensure that any possible tokens in that file are just comments
  // (i.e. not actual) positions in this file.
  
  import 'package:observatory/service_io.dart';
  import 'package:test/test.dart';
  import 'test_helper.dart';
  import 'service_test_common.dart';
  import 'dart:developer';
  import 'regress_34841_lib.dart';
  
  class Bar extends Object with Foo {}
  
  void testFunction() {
    Bar bar = new Bar();
    print(bar.foo);
    print(bar.baz());
    debugger();
  }
  
  var tests = <IsolateTest>[
    hasStoppedAtBreakpoint,
    (Isolate isolate) async {
      var stack = await isolate.getStack();
  
      // Make sure we are in the right place.
      expect(stack.type, equals('Stack'));
      expect(stack['frames'].length, greaterThanOrEqualTo(1));
      expect(stack['frames'][0].function.name, equals('testFunction'));
  
      var root = isolate.rootLibrary;
      await root.load();
      Script script = root.scripts.first;
      await script.load();
  
      var params = {
        'reports': ['Coverage'],
        'scriptId': script.id,
        'forceCompile': true
      };
      var report = await isolate.invokeRpcNoUpgrade('getSourceReport', params);
      List<dynamic> ranges = report['ranges'];
      List<int> coveragePlaces = <int>[];
      for (var range in ranges) {
        for (int i in range["coverage"]["hits"]) {
          coveragePlaces.add(i);
        }
        for (int i in range["coverage"]["misses"]) {
          coveragePlaces.add(i);
        }
      }
  
      // Make sure we can translate it all.
      for (int place in coveragePlaces) {
        int line = script.tokenToLine(place);
        int column = script.tokenToCol(place);
        if (line == null || column == null) {
          throw "Token $place translated to $line:$column";
        }
      }
    },
  ];
  
  main(args) => runIsolateTests(args, tests, testeeConcurrent: testFunction);
  