diff options
author | Chris Lattner <sabre@nondot.org> | 2009-04-25 22:50:55 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-04-25 22:50:55 +0000 |
commit | 338395d31eecbf99bc1b15ef5631d1359bb96083 (patch) | |
tree | 25685aedc4978d0f8f101ac7b9b067eeb4c9025d | |
parent | 070eff4df45a810f0fb3a50e932f6d95713875d4 (diff) |
minor diagnostics improvements.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70092 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/clang/Basic/DiagnosticSemaKinds.td | 5 | ||||
-rw-r--r-- | lib/Sema/SemaExpr.cpp | 10 |
2 files changed, 8 insertions, 7 deletions
diff --git a/include/clang/Basic/DiagnosticSemaKinds.td b/include/clang/Basic/DiagnosticSemaKinds.td index 0210ceff46..19f3157710 100644 --- a/include/clang/Basic/DiagnosticSemaKinds.td +++ b/include/clang/Basic/DiagnosticSemaKinds.td @@ -946,8 +946,9 @@ def err_arithmetic_nonfragile_interface : Error< def err_typecheck_subscript_value : Error< - "subscripted value is neither array nor pointer">; -def err_typecheck_subscript : Error<"array subscript is not an integer">; + "subscripted value is not an array, pointer, or vector">; +def err_typecheck_subscript_not_integer : Error< + "array subscript is not an integer">; def err_subscript_function_type : Error< "subscript of pointer to function type %0">; def err_subscript_incomplete_type : Error< diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp index 6e86e71bd4..873dd53f12 100644 --- a/lib/Sema/SemaExpr.cpp +++ b/lib/Sema/SemaExpr.cpp @@ -1636,13 +1636,13 @@ Sema::ActOnArraySubscriptExpr(Scope *S, ExprArg Base, SourceLocation LLoc, // FIXME: need to deal with const... ResultType = VTy->getElementType(); } else { - return ExprError(Diag(LHSExp->getLocStart(), - diag::err_typecheck_subscript_value) << RHSExp->getSourceRange()); + return ExprError(Diag(LLoc, diag::err_typecheck_subscript_value) + << LHSExp->getSourceRange() << RHSExp->getSourceRange()); } // C99 6.5.2.1p1 if (!IndexExpr->getType()->isIntegerType() && !IndexExpr->isTypeDependent()) - return ExprError(Diag(IndexExpr->getLocStart(), - diag::err_typecheck_subscript) << IndexExpr->getSourceRange()); + return ExprError(Diag(LLoc, diag::err_typecheck_subscript_not_integer) + << IndexExpr->getSourceRange()); // C99 6.5.2.1p1: "shall have type "pointer to *object* type". Similarly, // C++ [expr.sub]p1: The type "T" shall be a completely-defined object @@ -4586,7 +4586,7 @@ Sema::OwningExprResult Sema::ActOnBuiltinOffsetOf(Scope *S, // FIXME: Leaks Res if (!Idx->isTypeDependent() && !Idx->getType()->isIntegerType()) return ExprError(Diag(Idx->getLocStart(), - diag::err_typecheck_subscript) + diag::err_typecheck_subscript_not_integer) << Idx->getSourceRange()); Res = new (Context) ArraySubscriptExpr(Res, Idx, AT->getElementType(), |