Patent ID: 7716656

Claim:
A computer implemented system to enhance compiler static overload resolution, comprising a processor for executing the following computer executable components operable with a compiler that tracks nullability representation for a reference type when no run time support is supplied, wherein the nullability tracking is implemented with; a null unification component for static types to designate nullability of the static types, wherein the static types may be any of references or values, the unification component operating with nullability rules expressed via structured representation including operators to support the compiler; an operator that adds a level of nullability, wherein the operator that adds a level of nullability operates on both a reference type and a value type, wherein when the type is a value type, a nullability rule for expression E is represented by E ⁢ ⁢ As ⁢ ⁢ Tv E ? ⁢ As ⁢ ⁢ Nullable ⁢ ⁢ ( of ⁢ ⁢ Tv ) . wherein “?” is the operator that adds a level of nullability to a value type such that nullability of expression E as tracked by the compiler is represented as “E?” defined as “Nullable” in function of the type value Tv; and an operator that removes a level of nullability, wherein the operator that removes a level of nullability operates on both a reference type and a value type and wherein for a value type, a type rule is represented by E ⁢ ⁢ As ⁢ ⁢ Nullable ⁢ ⁢ ( of ⁢ ⁢ Tv ) E ! ⁢ ⁢ As ⁢ ⁢ Tv . wherein “!” is the operator that removes a level of nullability to a nullable type such the nullability of expression E as tracked by the compiler is represented as “E!” defined as “Nullability removed” in function of the type value Tv, and wherein if the type is a reference type, nullability for expression E as tracked by the compiler is determined by a rule represented by EAsTr E ? ⁢ As ⁢ ⁢ Nullable ⁢ ⁢ ( of ⁢ ⁢ Tr ) . where nullability of Expression E as tracked and represented as “E?” is defined as Nullable in function of the reference type Tr, or erased to said reference type.