# dmd.typinf

Generate `TypeInfo` objects, which are needed for run-time introspection of types.

#### Authors

Walter Bright

#### License

Boost License 1.0

Source: typinf.d

Documentation: https://dlang.org/phobos/dmd_typinf.html

Coverage: https://codecov.io/gh/dlang/dmd/src/master/src/dmd/typinf.d

- `genTypeInfo`

  #### Declaration

  `bool `genTypeInfo`(Expression `e`, const ref Loc `loc`, Type `torig`, Scope* `sc`);`

  Generates the `TypeInfo` object associated with ``torig`` if it hasn't already been generated

  #### Parameters

  `Expression `e`` | if not `null`, then expression for pretty-printing errors
  `Loc `loc`` | the location for reporting line numbers in errors
  `Type `torig`` | the type to generate the `TypeInfo` object for
  `Scope* `sc`` | the scope

  #### Return Value

  `true` if `TypeInfo` was generated and needs compiling to object file

- `getTypeInfoType`

  #### Declaration

  `Type `getTypeInfoType`(const ref Loc `loc`, Type `t`, Scope* `sc`, bool `genObjCode` = true);`

  Gets the type of the `TypeInfo` object associated with ``t``

  #### Parameters

  `Loc `loc`` | the location for reporting line nunbers in errors
  `Type `t`` | the type to get the type of the `TypeInfo` object for
  `Scope* `sc`` | the scope
  `bool `genObjCode`` | if `true`, object code will be generated for the obtained TypeInfo

  #### Return Value

  The type of the `TypeInfo` object associated with ``t``

- `isSpeculativeType`

  #### Declaration

  `bool `isSpeculativeType`(Type `t`);`

  #### Return Value

  `true` if any part of type `t` is speculative. if `t` is `null`, returns `false`.