blob: 9e12fb443b3d6bc5279dea7685d6877c5df86289 [file] [log] [blame]
// Copyright (c) 2022, 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/minitest.dart';
import 'package:front_end/src/api_prototype/expression_compilation_tools.dart';
void main() {
// null value.
expect(parseDefinitionTypes(["null"]), [new ParsedType.nullType()]);
// String, kNonNullable
expect(
parseDefinitionTypes([
"dart:core",
"_OneByteString",
"1",
"0",
]),
[new ParsedType("dart:core", "_OneByteString", 1)]);
// List<something it can't represent which thus becomes an explicit
// dynamic/null>, kNonNullable.
expect(parseDefinitionTypes(["dart:core", "List", "1", "1", "null"]), [
new ParsedType("dart:core", "List", 1)
..arguments!.add(new ParsedType.nullType())
]);
// List<int>, kNonNullable
expect(
parseDefinitionTypes([
"dart:core",
"_GrowableList",
"1",
"1",
"dart:core",
"int",
"1",
"0",
]),
[
new ParsedType("dart:core", "_GrowableList", 1)
..arguments!.add(new ParsedType("dart:core", "int", 1))
]);
// Map<int, int>, kNonNullable
expect(
parseDefinitionTypes([
"dart:core",
"Map",
"1",
"2",
"dart:core",
"int",
"1",
"0",
"dart:core",
"int",
"1",
"0",
]),
[
new ParsedType("dart:core", "Map", 1)
..arguments!.add(new ParsedType("dart:core", "int", 1))
..arguments!.add(new ParsedType("dart:core", "int", 1))
]);
// [0] = String
// [1] = int
// [2] = List<String>
// [3] = Bar
// [4] = null
// [5] = HashMap<Map<int, List<int>>, List<String>>
expect(
parseDefinitionTypes([
// String, kNonNullable, no arguments
"dart:core", "_OneByteString", "1", "0",
// Int, kNonNullable, no arguments
"dart:core", "_Smi", "1", "0",
// List, kNonNullable, 1 argument
"dart:core", "_GrowableList", "1", "1",
// -> String, kNonNullable (i.e. the above is List<String>)
/**/ "dart:core", "String", "1", "0",
// "Bar", kNonNullable, no arguments
"file://wherever/t.dart", "Bar", "1", "0",
// null value
"null",
// HashMap, kNonNullable, 2 arguments
"dart:collection", "_InternalLinkedHashMap", "1", "2",
// -> Map, kNonNullable, 2 arguments
/**/ "dart:core", "Map", "1", "2",
// -> -> int, kNonNullable, no arguments
/*/**/*/ "dart:core", "int", "1", "0",
// -> -> List, kNonNullable, 1 argument
/*/**/*/ "dart:core", "List", "1", "1",
// -> -> -> int, kNonNullable, no arguments
/*/*/**/*/*/ "dart:core", "int", "1", "0",
// -> List, kNonNullable, 1 argument
"dart:core", "List", "1", "1",
// -> -> String, kNonNullable, no arguments
"dart:core", "String", "1", "0"
]),
<ParsedType>[
// String
new ParsedType("dart:core", "_OneByteString", 1),
// int
new ParsedType("dart:core", "_Smi", 1),
// List<String>
new ParsedType("dart:core", "_GrowableList", 1)
..arguments!.addAll([
new ParsedType("dart:core", "String", 1),
]),
// Bar
new ParsedType("file://wherever/t.dart", "Bar", 1),
// null value
new ParsedType.nullType(),
// HashMap<Map<int, List<int>>, List<String>>
new ParsedType("dart:collection", "_InternalLinkedHashMap", 1)
..arguments!.addAll([
new ParsedType("dart:core", "Map", 1)
..arguments!.addAll([
new ParsedType("dart:core", "int", 1),
new ParsedType("dart:core", "List", 1)
..arguments!.addAll([
new ParsedType("dart:core", "int", 1),
]),
]),
new ParsedType("dart:core", "List", 1)
..arguments!.addAll([
new ParsedType("dart:core", "String", 1),
]),
]),
]);
}