# Copyright (c) 2020, 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.md file.

type: newworld
target: DDC
trackWidgetCreation: true
worlds:
  - entry: main.dart
    sources:
      main.dart: |
        import 'package:flutter/src/widgets/framework.dart';
        import 'package:flutter/src/widgets/widget_inspector.dart';

        class Foo extends Widget {}
      flutter/lib/src/widgets/framework.dart: |
        abstract class Bar {}

        abstract class Widget extends Bar {}
      flutter/lib/src/widgets/widget_inspector.dart: |
        abstract class _HasCreationLocation {
          _Location get _location;
        }

        /// A tuple with file, line, and column number, for displaying human-readable
        /// file locations.
        class _Location {
          const _Location({
            this.file,
            this.line,
            this.column,
            this.name,
            this.parameterLocations,
          });

          /// File path of the location.
          final String file;

          /// 1-based line number.
          final int line;

          /// 1-based column number.
          final int column;

          /// Optional name of the parameter or function at this location.
          final String name;

          /// Optional locations of the parameters of the member at this location.
          final List<_Location> parameterLocations;
        }
      .packages: |
        flutter:flutter/lib
    expectedLibraryCount: 3
  - entry: main.dart
    worldType: updated
    invalidate:
      - main.dart
    expectInitializeFromDill: false
    sources:
      main.dart: |
        import 'package:flutter/src/widgets/framework.dart';
        import 'package:flutter/src/widgets/widget_inspector.dart';

        class Foo extends Widget {}
    expectedLibraryCount: 3
