# This file is part of the Luau programming language and is licensed under MIT License; see LICENSE.txt for details

class VariantPrinter:
    def __init__(self, val):
        self.val = val

    def to_string(self):
        typeId = int(self.val['typeId'])
        type = self.val.type.template_argument(typeId)
        value = self.val['storage'].reinterpret_cast(type.pointer()).dereference()
        return type.name + " [" + str(value) + "]"

def match_printer(val):
    type = val.type.strip_typedefs()
    if type.name and type.name.startswith('Luau::Variant<'):
        return VariantPrinter(val)
    return None

gdb.pretty_printers.append(match_printer)