dartObjectToSource function

String dartObjectToSource(
  1. DartObject object
)

Converts a DartObject (compile-time constant) to its Dart source code representation.

Implementation

String dartObjectToSource(DartObject object) {
  if (object.isNull) {
    return 'null';
  }

  if (object.toBoolValue() case final bool value) {
    return value ? 'true' : 'false';
  }

  if (object.toIntValue() case final int value) {
    return value.toString();
  }

  if (object.toDoubleValue() case final double value) {
    return value.toString();
  }

  if (object.toStringValue() case final String value) {
    return "'${value.replaceAll("'", r"\'")}'";
  }

  if (object.toTypeValue() case final DartType type) {
    return type.getDisplayString();
  }

  if (object.toSymbolValue() case final String value) {
    return '#$value';
  }

  throw ArgumentError('Cannot convert DartObject to source: $object');
}