Module: MilkTea::Types
- Defined in:
- lib/milk_tea/core/types/types.rb,
lib/milk_tea/core/types/registry.rb
Defined Under Namespace
Modules: Registry
Classes: AttributeHandle, Base, CallableHandle, Dyn, DynVtable, Enum, EnumBase, Error, Event, FieldHandle, Flags, Function, GenericInstance, GenericStructDefinition, GenericVariantDefinition, Handle, LifetimeRef, LiteralTypeArg, Matrix, MemberHandle, Null, Nullable, Opaque, Parameter, Primitive, Proc, Quaternion, ReflectionHandleType, Simd, SoA, Span, StringView, Struct, StructHandle, StructInstance, Subscription, Task, Tuple, TypeType, TypeVar, Union, Variant, VariantArmPayload, VariantInstance, Vector
Constant Summary
collapse
- BUILTIN_PRIMITIVE_NAMES =
MilkTea::BUILTIN_PRIMITIVE_NAMES
- RESERVED_VALUE_TYPE_NAMES =
MilkTea::RESERVED_VALUE_TYPE_NAMES
- RESERVED_IMPORT_ALIAS_NAMES =
MilkTea::RESERVED_IMPORT_ALIAS_NAMES
- BUILTIN_TYPE_NAMES =
MilkTea::BUILTIN_TYPE_NAMES
- RESERVED_TYPE_BINDING_NAMES =
BUILTIN_TYPE_NAMES
- BUILTIN_STRUCT_HANDLE_TYPE =
ReflectionHandleType.new("struct_handle")
- BUILTIN_FIELD_HANDLE_TYPE =
ReflectionHandleType.new("field_handle")
- BUILTIN_CALLABLE_HANDLE_TYPE =
ReflectionHandleType.new("callable_handle")
- BUILTIN_ATTRIBUTE_HANDLE_TYPE =
ReflectionHandleType.new("attribute_handle")
- BUILTIN_MEMBER_HANDLE_TYPE =
ReflectionHandleType.new("member_handle")
- BUILTIN_TYPE_META_TYPE =
TypeType.new
- BUILTIN_VECTOR_ELEMENT =
Primitive.new("float")
- BUILTIN_IVECTOR_ELEMENT =
Primitive.new("int")
- BUILTIN_OPTION_TYPE =
GenericVariantDefinition.new("Option", ["T"]).define_arms(
"some" => { "value" => TypeVar.new("T") },
"none" => {},
)
- BUILTIN_RESULT_TYPE =
GenericVariantDefinition.new("Result", ["T", "E"]).define_arms(
"success" => { "value" => TypeVar.new("T") },
"failure" => { "error" => TypeVar.new("E") },
)
Class Method Summary
collapse
Class Method Details
.array_type?(type) ⇒ Boolean
1730
1731
1732
|
# File 'lib/milk_tea/core/types/types.rb', line 1730
def self.array_type?(type)
type.is_a?(GenericInstance) && type.name == "array" && type.arguments.length == 2
end
|
.integer_type?(type) ⇒ Boolean
1726
1727
1728
|
# File 'lib/milk_tea/core/types/types.rb', line 1726
def self.integer_type?(type)
type.is_a?(Primitive) && %w[int ptr_uint i8 i16 i32 i64 u8 u16 u32 u64].include?(type.name)
end
|
.pointer_to(type) ⇒ Object
1722
1723
1724
|
# File 'lib/milk_tea/core/types/types.rb', line 1722
def self.pointer_to(type)
GenericInstance.new("ptr", [type])
end
|
.str_buffer_type?(type) ⇒ Boolean
1734
1735
1736
|
# File 'lib/milk_tea/core/types/types.rb', line 1734
def self.str_buffer_type?(type)
type.is_a?(GenericInstance) && type.name == "str_buffer" && type.arguments.length == 1
end
|
.substitute_type_variables(type, substitutions) ⇒ Object
15
16
17
|
# File 'lib/milk_tea/core/types/types.rb', line 15
def self.substitute_type_variables(type, substitutions)
SubstituteTypeVisitor.new(substitutions).apply(type)
end
|