19
expr.cpp
19
expr.cpp
@@ -7065,9 +7065,22 @@ TypeCastExpr::GetLValue(FunctionEmitContext *ctx) const {
|
|||||||
|
|
||||||
const Type *
|
const Type *
|
||||||
TypeCastExpr::GetType() const {
|
TypeCastExpr::GetType() const {
|
||||||
// We have to switch off this assert after supporting of operators.
|
// Here we try to resolve situation where (base_type) can be treated as
|
||||||
//AssertPos(pos, type->HasUnboundVariability() == false);
|
// (uniform base_type) of (varying base_type). This is a part of function
|
||||||
return type;
|
// TypeCastExpr::TypeCheck. After implementation of operators we
|
||||||
|
// have to have this functionality here.
|
||||||
|
const Type *toType = type, *fromType = expr->GetType();
|
||||||
|
if (toType == NULL || fromType == NULL)
|
||||||
|
return NULL;
|
||||||
|
if (toType->HasUnboundVariability()) {
|
||||||
|
if (fromType->IsUniformType()) {
|
||||||
|
toType = type->ResolveUnboundVariability(Variability::Uniform);
|
||||||
|
} else {
|
||||||
|
toType = type->ResolveUnboundVariability(Variability::Varying);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
AssertPos(pos, toType->HasUnboundVariability() == false);
|
||||||
|
return toType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user