| // 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. |
| |
| import "package:expect/expect.dart" show Expect; |
| |
| import 'package:kernel/ast.dart' hide MapEntry; |
| import 'package:kernel/src/legacy_erasure.dart'; |
| import 'package:kernel/testing/type_parser_environment.dart'; |
| |
| const Map<String, String> data = { |
| 'Null': 'Null', |
| 'Never': 'Null', |
| 'Never?': 'Null', |
| 'void': 'void', |
| 'dynamic': 'dynamic', |
| 'bool': 'bool*', |
| 'bool?': 'bool*', |
| 'bool*': 'bool*', |
| 'List<bool>': 'List<bool*>*', |
| 'List<bool?>': 'List<bool*>*', |
| 'List<bool*>': 'List<bool*>*', |
| 'List<bool>?': 'List<bool*>*', |
| 'List<bool?>?': 'List<bool*>*', |
| 'List<bool*>?': 'List<bool*>*', |
| 'List<bool>*': 'List<bool*>*', |
| 'List<bool?>*': 'List<bool*>*', |
| 'List<bool*>*': 'List<bool*>*', |
| '() ->* bool*': '() ->* bool*', |
| '() ->? bool*': '() ->* bool*', |
| '() -> bool*': '() ->* bool*', |
| '() ->* bool?': '() ->* bool*', |
| '() ->? bool?': '() ->* bool*', |
| '() -> bool?': '() ->* bool*', |
| '() ->* bool': '() ->* bool*', |
| '() ->? bool': '() ->* bool*', |
| '() -> bool': '() ->* bool*', |
| '(int*) -> void': '(int*) ->* void', |
| '(int?) -> void': '(int*) ->* void', |
| '(int) -> void': '(int*) ->* void', |
| '([int*]) -> void': '([int*]) ->* void', |
| '([int?]) -> void': '([int*]) ->* void', |
| '([int]) -> void': '([int*]) ->* void', |
| '({int* a}) -> void': '({int* a}) ->* void', |
| '({int? a}) -> void': '({int* a}) ->* void', |
| '({int a}) -> void': '({int* a}) ->* void', |
| '({required int* a}) -> void': '({int* a}) ->* void', |
| '({required int? a}) -> void': '({int* a}) ->* void', |
| '({required int a}) -> void': '({int* a}) ->* void', |
| '<T>(T) -> void': '<T extends Object*>(T) ->* void', |
| '<T>(T?) -> void': '<T extends Object*>(T*) ->* void', |
| '<T extends bool>(T) -> void': '<T extends bool*>(T) ->* void', |
| '<T extends List<T>>(T) -> void': '<T extends List<T*>*>(T) ->* void', |
| }; |
| |
| main() { |
| Env env = new Env('', isNonNullableByDefault: true); |
| data.forEach((String input, String output) { |
| DartType inputType = env.parseType(input); |
| DartType expectedOutputType = env.parseType(output); |
| DartType actualOutputType = legacyErasure(env.coreTypes, inputType); |
| print('legacyErasure($inputType) = $actualOutputType: $expectedOutputType'); |
| Expect.equals( |
| expectedOutputType, |
| actualOutputType, |
| "Unexpected legacy erasure of $inputType ('$input'):\n" |
| "Expected: ${expectedOutputType} ('$output')\n" |
| "Actual: ${actualOutputType}"); |
| }); |
| } |