public void LiteralTypeAndConstructorType_Unify_TypeMismatchReported() { TypeVariableSet typeVariableSet = new TypeVariableSet(); TypeVariableReference literalReference = typeVariableSet.CreateTypeVariableReferenceFromNIType(NITypes.Int32), constructorReference = typeVariableSet.CreateTypeVariableReferenceFromNIType(NITypes.Int32.CreateVector()); var testTypeUnificationResult = new TestTypeUnificationResult(); typeVariableSet.Unify(constructorReference, literalReference, testTypeUnificationResult); Assert.IsTrue(testTypeUnificationResult.TypeMismatch); }
public void TwoDifferentLiteralTypes_Unify_TypeMismatchReported() { TypeVariableSet typeVariableSet = new TypeVariableSet(); TypeVariableReference literalReference1 = typeVariableSet.CreateTypeVariableReferenceFromNIType(NITypes.Int32), literalReference2 = typeVariableSet.CreateTypeVariableReferenceFromNIType(NITypes.Boolean); var testTypeUnificationResult = new TestTypeUnificationResult(); typeVariableSet.Unify(literalReference2, literalReference1, testTypeUnificationResult); Assert.IsTrue(testTypeUnificationResult.TypeMismatch); }
public void TwoConstructorTypesWithDifferentConstructorNames_Unify_TypeMismatchReported() { TypeVariableSet typeVariableSet = new TypeVariableSet(); TypeVariableReference constructorType1 = typeVariableSet.CreateReferenceToOptionType( typeVariableSet.CreateTypeVariableReferenceFromNIType(NITypes.Int32)); TypeVariableReference constructorType2 = typeVariableSet.CreateReferenceToLockingCellType( typeVariableSet.CreateTypeVariableReferenceFromNIType(NITypes.Int32)); var typeUnificationResult = new TestTypeUnificationResult(); typeVariableSet.Unify(constructorType1, constructorType2, typeUnificationResult); Assert.IsTrue(typeUnificationResult.TypeMismatch); }
public void TwoConstructorTypesWithSameConstructorNameAndDifferentInnerTypes_Unify_TypeMismatchReported() { TypeVariableSet typeVariableSet = new TypeVariableSet(); TypeVariableReference constructorType1 = typeVariableSet.CreateReferenceToConstructorType("Vector", typeVariableSet.CreateReferenceToLiteralType(PFTypes.Int32)); TypeVariableReference constructorType2 = typeVariableSet.CreateReferenceToConstructorType("Vector", typeVariableSet.CreateReferenceToLiteralType(PFTypes.Boolean)); var typeUnificationResult = new TestTypeUnificationResult(); typeVariableSet.Unify(constructorType1, constructorType2, typeUnificationResult); Assert.IsTrue(typeUnificationResult.TypeMismatch); }
public void TypeVariableWithCopyConstraintAndNonCopyableType_Unify_FailedConstraintReported() { TypeVariableSet typeVariableSet = new TypeVariableSet(); TypeVariableReference literalReference = typeVariableSet.CreateReferenceToReferenceType( true, typeVariableSet.CreateTypeVariableReferenceFromNIType(NITypes.Int32), typeVariableSet.CreateReferenceToLifetimeType(Lifetime.Static)); var constraint = new SimpleTraitConstraint("Copy"); TypeVariableReference typeVariable = typeVariableSet.CreateReferenceToNewTypeVariable(constraint.ToEnumerable()); var testTypeUnificationResult = new TestTypeUnificationResult(); typeVariableSet.Unify(typeVariable, literalReference, testTypeUnificationResult); Assert.IsTrue(testTypeUnificationResult.FailedConstraints.Contains(constraint)); }