aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-04-25 22:50:55 +0000
committerChris Lattner <sabre@nondot.org>2009-04-25 22:50:55 +0000
commit338395d31eecbf99bc1b15ef5631d1359bb96083 (patch)
tree25685aedc4978d0f8f101ac7b9b067eeb4c9025d
parent070eff4df45a810f0fb3a50e932f6d95713875d4 (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.td5
-rw-r--r--lib/Sema/SemaExpr.cpp10
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(),