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_}")