import 'constants_lib.dart' as lib;

const int Function(int) partialInstantiation = lib.id;
const instance = const lib.Class<int>(0);
const listLiteral = <int>[0];
const setLiteral = <int>{0};
const mapLiteral = <int, String>{0: 'foo'};
const listConcatenation = <int>[...listLiteral];
const setConcatenation = <int>{...setLiteral};
const mapConcatenation = <int, String>{...mapLiteral};
const partialInstantiationIdentical =
    identical(partialInstantiation, lib.partialInstantiation);
const instanceIdentical = identical(instance, lib.instance);
const listLiteralIdentical = identical(listLiteral, lib.listLiteral);
const setLiteralIdentical = identical(setLiteral, lib.setLiteral);
const mapLiteralIdentical = identical(mapLiteral, lib.mapLiteral);
const listConcatenationIdentical =
    identical(listConcatenation, lib.listConcatenation);
const setConcatenationIdentical =
    identical(setConcatenation, lib.setConcatenation);
const mapConcatenationIdentical =
    identical(mapConcatenation, lib.mapConcatenation);
main() {}
test(expected, actual) {}
