in lib/src/builder.dart [305:342]
void _addTypesFromConstant(DartObject object) {
final constant = ConstantReader(object);
if (constant.isNull ||
constant.isBool ||
constant.isInt ||
constant.isDouble ||
constant.isString ||
constant.isType) {
// No types to add from a literal.
return;
} else if (constant.isList) {
for (var element in constant.listValue) {
_addTypesFromConstant(element);
}
} else if (constant.isSet) {
for (var element in constant.setValue) {
_addTypesFromConstant(element);
}
} else if (constant.isMap) {
for (var pair in constant.mapValue.entries) {
_addTypesFromConstant(pair.key!);
_addTypesFromConstant(pair.value!);
}
} else if (object.toFunctionValue() != null) {
_elements.add(object.toFunctionValue()!);
} else {
// If [constant] is not null, a literal, or a type, then it must be an
// object constructed with `const`. Revive it.
var revivable = constant.revive();
for (var argument in revivable.positionalArguments) {
_addTypesFromConstant(argument);
}
for (var pair in revivable.namedArguments.entries) {
_addTypesFromConstant(pair.value);
}
_addType(object.type);
}
}