TypeDefinition.fromDynamic constructor

TypeDefinition.fromDynamic(
  1. dynamic obj,
  2. Node? astNode
)

Implementation

factory TypeDefinition.fromDynamic(dynamic obj, Node? astNode) {
  var isAmbiguous = false;
  final type = getTypeName(obj);
  if (type == 'List') {
    var list = obj as List;
    String elemType;
    if (list.isNotEmpty) {
      elemType = getTypeName(list[0]);
      for (dynamic listVal in list) {
        if (elemType != getTypeName(listVal)) {
          isAmbiguous = true;
          break;
        }
      }
    } else {
      // when array is empty insert Null just to warn the user
      elemType = 'Null';
    }
    return TypeDefinition(type,
        astNode: astNode, subtype: elemType, isAmbiguous: isAmbiguous);
  }
  return TypeDefinition(type, astNode: astNode, isAmbiguous: isAmbiguous);
}