blob: 24ec460698b7d13aa961d0d3fbcedd49c89b7f59 [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:kernel/kernel.dart';
/// Converts a [jsonObject] into a kernel [Constant].
///
/// [jsonObject] must consist only of [double], [int], [String], [List], and
/// [Map] recursively.
Constant jsonToKernelConstant(Object jsonObject) {
if (jsonObject is int) {
return IntConstant(jsonObject);
}
if (jsonObject is double) {
return DoubleConstant(jsonObject);
}
if (jsonObject is String) {
return StringConstant(jsonObject);
}
if (jsonObject is List) {
return ListConstant(DynamicType(), [
for (final element in jsonObject) jsonToKernelConstant(element as Object),
]);
}
if (jsonObject is Map) {
return MapConstant(DynamicType(), DynamicType(), [
for (final entry in jsonObject.entries)
ConstantMapEntry(
jsonToKernelConstant(entry.key as Object),
jsonToKernelConstant(entry.value as Object),
),
]);
}
throw UnsupportedError(
'Unknown data type: ${jsonObject.runtimeType} $jsonObject',
);
}