module Carbon::Concrete::Item
Items. These are buildable concepts that have dependencies. Each item includes {Item::Base} in order to respond to the item API. The main API for items are the following set of methods:
-
`#intern` (`String`) - Returns an “interned” name of the item. See {Base#intern}.
-
`#name` (`String`) - The full name of the item. See {Base#name}.
-
`#generics` (`<Type::Generic>`) - The generics of the item. This is normally something like `[T]`; these most likely have no correspondance to an actual type. See {Base#generics}.
-
`#dependencies` (`Set<Request>`) - A set of dependencies that the item has. This includes the generics that the item uses. See {Base#dependencies}.
-
`#==`, `#eql?` (`Boolean`) - Comparison. Normally uses the `#intern` name for a basis of comarison. See {Base#==}.
-
`#call` - Builds the item for compilation. This is the last stage. This should generate something for LLVM in some way. See {Base#call}.
-
`#corrected_dependencies` (`Enumerable`) - Corrects the depdenencies of the
Item
. This makes it so that the generics of the passed request are matched with the generics of the dependencies, essentially resolving them. See {Base#corrected_dependencies}.