diff options
-rw-r--r-- | lib/AST/Decl.cpp | 4 | ||||
-rw-r--r-- | test/Index/in-class-init.cpp | 6 |
2 files changed, 8 insertions, 2 deletions
diff --git a/lib/AST/Decl.cpp b/lib/AST/Decl.cpp index 32b9a624e0..6c7deca5fd 100644 --- a/lib/AST/Decl.cpp +++ b/lib/AST/Decl.cpp @@ -2197,8 +2197,8 @@ unsigned FieldDecl::getFieldIndex() const { } SourceRange FieldDecl::getSourceRange() const { - if (isBitField()) - return SourceRange(getInnerLocStart(), getBitWidth()->getLocEnd()); + if (const Expr *E = InitializerOrBitWidth.getPointer()) + return SourceRange(getInnerLocStart(), E->getLocEnd()); return DeclaratorDecl::getSourceRange(); } diff --git a/test/Index/in-class-init.cpp b/test/Index/in-class-init.cpp new file mode 100644 index 0000000000..9469434024 --- /dev/null +++ b/test/Index/in-class-init.cpp @@ -0,0 +1,6 @@ +struct S { + int field = 2; +}; + +// RUN: c-index-test -test-load-source all -std=c++0x %s | FileCheck %s +// CHECK: 2:7: FieldDecl=field:2:7 (Definition) Extent=[2:3 - 2:16] |