mirror of
https://github.com/cc65/cc65.git
synced 2025-08-15 06:27:36 +00:00
Fixed an error: A function wasn't converted to a void pointer automatically by
the compiler. git-svn-id: svn://svn.cc65.org/cc65/trunk@4741 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
@@ -186,6 +186,11 @@ void TypeConversion (ExprDesc* Expr, Type* NewType)
|
||||
Error ("Illegal type");
|
||||
}
|
||||
|
||||
/* If Expr is a function, convert it to pointer to function */
|
||||
if (IsTypeFunc(Expr->Type)) {
|
||||
Expr->Type = PointerTo (Expr->Type);
|
||||
}
|
||||
|
||||
/* If both types are equal, no conversion is needed */
|
||||
if (TypeCmp (Expr->Type, NewType) >= TC_EQUAL) {
|
||||
/* We're already done */
|
||||
@@ -250,16 +255,6 @@ void TypeConversion (ExprDesc* Expr, Type* NewType)
|
||||
if (!ED_IsConstAbsInt (Expr) || Expr->IVal != 0) {
|
||||
Warning ("Converting integer to pointer without a cast");
|
||||
}
|
||||
} else if (IsTypeFuncPtr (NewType) && IsTypeFunc(Expr->Type)) {
|
||||
/* Function -> Function pointer. First convert rhs to pointer */
|
||||
Expr->Type = PointerTo (Expr->Type);
|
||||
|
||||
/* Assignment of function to function pointer is allowed, provided
|
||||
* that both functions have the same parameter list.
|
||||
*/
|
||||
if (TypeCmp (NewType, Expr->Type) < TC_COMPATIBLE) {
|
||||
Error ("Incompatible types");
|
||||
}
|
||||
} else {
|
||||
Error ("Incompatible types");
|
||||
}
|
||||
|
Reference in New Issue
Block a user