[cfe-commits] r173170 - in /cfe/trunk: lib/AST/Decl.cpp test/SemaCXX/sourceranges.cpp
Nico Weber
nicolasweber at gmx.de
Tue Jan 22 09:00:09 PST 2013
Author: nico
Date: Tue Jan 22 11:00:09 2013
New Revision: 173170
URL: http://llvm.org/viewvc/llvm-project?rev=173170&view=rev
Log:
Fix a bug in VarDecl::getSourceRange() for static member arrays with an element
type with an implicit initializer expression.
Patch from Will Wilson <will at indefiant.com>!
Modified:
cfe/trunk/lib/AST/Decl.cpp
cfe/trunk/test/SemaCXX/sourceranges.cpp
Modified: cfe/trunk/lib/AST/Decl.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/Decl.cpp?rev=173170&r1=173169&r2=173170&view=diff
==============================================================================
--- cfe/trunk/lib/AST/Decl.cpp (original)
+++ cfe/trunk/lib/AST/Decl.cpp Tue Jan 22 11:00:09 2013
@@ -1206,7 +1206,9 @@
SourceRange VarDecl::getSourceRange() const {
if (const Expr *Init = getInit()) {
SourceLocation InitEnd = Init->getLocEnd();
- if (InitEnd.isValid())
+ // If Init is implicit, ignore its source range and fallback on
+ // DeclaratorDecl::getSourceRange() to handle postfix elements.
+ if (InitEnd.isValid() && InitEnd != getLocation())
return SourceRange(getOuterLocStart(), InitEnd);
}
return DeclaratorDecl::getSourceRange();
Modified: cfe/trunk/test/SemaCXX/sourceranges.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/sourceranges.cpp?rev=173170&r1=173169&r2=173170&view=diff
==============================================================================
--- cfe/trunk/test/SemaCXX/sourceranges.cpp (original)
+++ cfe/trunk/test/SemaCXX/sourceranges.cpp Tue Jan 22 11:00:09 2013
@@ -7,11 +7,14 @@
};
namespace foo {
-class A {};
+class A { public: A() {} };
enum B {};
typedef int C;
}
+// CHECK: VarDecl {{0x[0-9a-fA-F]+}} <line:16:1, col:36> ImplicitConstrArray 'foo::A [2]'
+static foo::A ImplicitConstrArray[2];
+
int main() {
// CHECK: CXXNewExpr {{0x[0-9a-fA-F]+}} <col:19, col:28> 'foo::A *'
P<foo::A> p14 = new foo::A;
More information about the cfe-commits
mailing list