コード例 #1
0
def as_language_type(type_: types.Type, symbol_table: SymbolTable) -> types.Type:
    assert isinstance(type_, types.Placeholder)
    text = type_.text

    if text == "i32":
        return types.I32()
    if text == "void":
        return types.Void()
    if text == "boolean":
        return types.Boolean()
    if symbol_table.has(text):
        symbol = symbol_table.get(text)
        assert symbol.type.is_data() or symbol.type.is_trait()
        return types.TypeRef(name=text)
    else:
        raise TypeError(f"Type not supported: {type_}")