# 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.md file.

# Initialize from component, where the component is linked to one sdk, and where
# the incremental compiler loads another sdk. Risk when doing this: Having two
# definitions of the same thing (e.g. the class 'String'), which could lead to
# errors such as "The argument type 'dart.core::String' can't be assigned to
# the parameter type 'dart.core::String'".

type: newworld
strong: true
worlds:
  - entry: main.dart
    errors: false
    warnings: false
    sources:
      main.dart: |
        import "b.dart";

        main() {
          useString("hello");
        }
      b.dart: |
        import "dart:core";

        void useString(String s) {
          print("Hello from useString: $s");
        }
    expectedLibraryCount: 2
  - entry: main.dart
    errors: false
    warnings: false
    fromComponent: true
    invalidate:
      - main.dart
    sources:
      main.dart: |
        import "b.dart";

        main() {
          useString("hello");
        }
      b.dart: |
        import "dart:core";

        void useString(String s) {
          print("Hello from useString: $s");
        }
    expectedLibraryCount: 2