aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema/SemaInit.cpp
diff options
context:
space:
mode:
authorJohn McCall <rjmccall@apple.com>2010-08-25 10:28:54 +0000
committerJohn McCall <rjmccall@apple.com>2010-08-25 10:28:54 +0000
commit5baba9d98364a3525d6afa15a04cdad82fd6dd30 (patch)
treefa5f362a24e847c0853cb792239948880e89f96c /lib/Sema/SemaInit.cpp
parentf869d205c5985121b8134a9174ed8d3b136637b5 (diff)
More incremental progress towards not including Expr.h in Sema.h.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112044 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaInit.cpp')
-rw-r--r--lib/Sema/SemaInit.cpp66
1 files changed, 31 insertions, 35 deletions
diff --git a/lib/Sema/SemaInit.cpp b/lib/Sema/SemaInit.cpp
index 034099eac4..57a1874ed4 100644
--- a/lib/Sema/SemaInit.cpp
+++ b/lib/Sema/SemaInit.cpp
@@ -2095,12 +2095,12 @@ void InitializationSequence::AddAddressOverloadResolutionStep(
}
void InitializationSequence::AddDerivedToBaseCastStep(QualType BaseType,
- ImplicitCastExpr::ResultCategory Category) {
+ ExprValueKind VK) {
Step S;
- switch (Category) {
- case ImplicitCastExpr::RValue: S.Kind = SK_CastDerivedToBaseRValue; break;
- case ImplicitCastExpr::XValue: S.Kind = SK_CastDerivedToBaseXValue; break;
- case ImplicitCastExpr::LValue: S.Kind = SK_CastDerivedToBaseLValue; break;
+ switch (VK) {
+ case VK_RValue: S.Kind = SK_CastDerivedToBaseRValue; break;
+ case VK_XValue: S.Kind = SK_CastDerivedToBaseXValue; break;
+ case VK_LValue: S.Kind = SK_CastDerivedToBaseLValue; break;
default: llvm_unreachable("No such category");
}
S.Type = BaseType;
@@ -2134,19 +2134,18 @@ void InitializationSequence::AddUserConversionStep(FunctionDecl *Function,
}
void InitializationSequence::AddQualificationConversionStep(QualType Ty,
- ImplicitCastExpr::ResultCategory Category) {
+ ExprValueKind VK) {
Step S;
- switch (Category) {
- case ImplicitCastExpr::RValue:
+ switch (VK) {
+ case VK_RValue:
S.Kind = SK_QualificationConversionRValue;
break;
- case ImplicitCastExpr::XValue:
+ case VK_XValue:
S.Kind = SK_QualificationConversionXValue;
break;
- case ImplicitCastExpr::LValue:
+ case VK_LValue:
S.Kind = SK_QualificationConversionLValue;
break;
- default: llvm_unreachable("No such category");
}
S.Type = Ty;
Steps.push_back(S);
@@ -2409,12 +2408,11 @@ static OverloadingResult TryRefInitWithConversionFunction(Sema &S,
// Determine whether we need to perform derived-to-base or
// cv-qualification adjustments.
- ImplicitCastExpr::ResultCategory Category = ImplicitCastExpr::RValue;
+ ExprValueKind VK = VK_RValue;
if (T2->isLValueReferenceType())
- Category = ImplicitCastExpr::LValue;
+ VK = VK_LValue;
else if (const RValueReferenceType *RRef = T2->getAs<RValueReferenceType>())
- Category = RRef->getPointeeType()->isFunctionType() ?
- ImplicitCastExpr::LValue : ImplicitCastExpr::XValue;
+ VK = RRef->getPointeeType()->isFunctionType() ? VK_LValue : VK_XValue;
bool NewDerivedToBase = false;
bool NewObjCConversion = false;
@@ -2436,14 +2434,14 @@ static OverloadingResult TryRefInitWithConversionFunction(Sema &S,
Sequence.AddDerivedToBaseCastStep(
S.Context.getQualifiedType(T1,
T2.getNonReferenceType().getQualifiers()),
- Category);
+ VK);
else if (NewObjCConversion)
Sequence.AddObjCObjectConversionStep(
S.Context.getQualifiedType(T1,
T2.getNonReferenceType().getQualifiers()));
if (cv1T1.getQualifiers() != T2.getNonReferenceType().getQualifiers())
- Sequence.AddQualificationConversionStep(cv1T1, Category);
+ Sequence.AddQualificationConversionStep(cv1T1, VK);
Sequence.AddReferenceBindingStep(cv1T1, !T2->isReferenceType());
return OR_Success;
@@ -2520,13 +2518,13 @@ static void TryReferenceInitialization(Sema &S,
if (DerivedToBase)
Sequence.AddDerivedToBaseCastStep(
S.Context.getQualifiedType(T1, T2Quals),
- ImplicitCastExpr::LValue);
+ VK_LValue);
else if (ObjCConversion)
Sequence.AddObjCObjectConversionStep(
S.Context.getQualifiedType(T1, T2Quals));
if (T1Quals != T2Quals)
- Sequence.AddQualificationConversionStep(cv1T1,ImplicitCastExpr::LValue);
+ Sequence.AddQualificationConversionStep(cv1T1, VK_LValue);
bool BindingTemporary = T1Quals.hasConst() && !T1Quals.hasVolatile() &&
(Initializer->getBitField() || Initializer->refersToVectorElement());
Sequence.AddReferenceBindingStep(cv1T1, BindingTemporary);
@@ -2603,16 +2601,14 @@ static void TryReferenceInitialization(Sema &S,
if (DerivedToBase)
Sequence.AddDerivedToBaseCastStep(
S.Context.getQualifiedType(T1, T2Quals),
- isXValue ? ImplicitCastExpr::XValue
- : ImplicitCastExpr::RValue);
+ isXValue ? VK_XValue : VK_RValue);
else if (ObjCConversion)
Sequence.AddObjCObjectConversionStep(
S.Context.getQualifiedType(T1, T2Quals));
if (T1Quals != T2Quals)
Sequence.AddQualificationConversionStep(cv1T1,
- isXValue ? ImplicitCastExpr::XValue
- : ImplicitCastExpr::RValue);
+ isXValue ? VK_XValue : VK_RValue);
Sequence.AddReferenceBindingStep(cv1T1, /*bindingTemporary=*/!isXValue);
return;
}
@@ -3617,17 +3613,17 @@ InitializationSequence::Perform(Sema &S,
cast<CXXRecordDecl>(RecordTy->getDecl()));
}
- ImplicitCastExpr::ResultCategory Category =
+ ExprValueKind VK =
Step->Kind == SK_CastDerivedToBaseLValue ?
- ImplicitCastExpr::LValue :
+ VK_LValue :
(Step->Kind == SK_CastDerivedToBaseXValue ?
- ImplicitCastExpr::XValue :
- ImplicitCastExpr::RValue);
+ VK_XValue :
+ VK_RValue);
CurInit = S.Owned(ImplicitCastExpr::Create(S.Context,
Step->Type,
CastExpr::CK_DerivedToBase,
- (Expr*)CurInit.release(),
- &BasePath, Category));
+ CurInit.get(),
+ &BasePath, VK));
break;
}
@@ -3765,7 +3761,7 @@ InitializationSequence::Perform(Sema &S,
CurInit = S.Owned(ImplicitCastExpr::Create(S.Context,
CurInitExpr->getType(),
CastKind, CurInitExpr, 0,
- IsLvalue ? ImplicitCastExpr::LValue : ImplicitCastExpr::RValue));
+ IsLvalue ? VK_LValue : VK_RValue));
if (RequiresCopy)
CurInit = CopyObject(S, Entity.getType().getNonReferenceType(), Entity,
@@ -3778,13 +3774,13 @@ InitializationSequence::Perform(Sema &S,
case SK_QualificationConversionXValue:
case SK_QualificationConversionRValue: {
// Perform a qualification conversion; these can never go wrong.
- ImplicitCastExpr::ResultCategory Category =
+ ExprValueKind VK =
Step->Kind == SK_QualificationConversionLValue ?
- ImplicitCastExpr::LValue :
+ VK_LValue :
(Step->Kind == SK_QualificationConversionXValue ?
- ImplicitCastExpr::XValue :
- ImplicitCastExpr::RValue);
- S.ImpCastExprToType(CurInitExpr, Step->Type, CastExpr::CK_NoOp, Category);
+ VK_XValue :
+ VK_RValue);
+ S.ImpCastExprToType(CurInitExpr, Step->Type, CastExpr::CK_NoOp, VK);
CurInit.release();
CurInit = S.Owned(CurInitExpr);
break;