wip: distinguish constant foldable type and singleton type over literal