forked from OSchip/llvm-project
Fix the source-range information for an EnumConstantDecl; previously,
it did not include the initializer expression. llvm-svn: 112739
This commit is contained in:
parent
026cb58a44
commit
be99693127
|
@ -1697,6 +1697,8 @@ public:
|
|||
void setInitExpr(Expr *E) { Init = (Stmt*) E; }
|
||||
void setInitVal(const llvm::APSInt &V) { Val = V; }
|
||||
|
||||
SourceRange getSourceRange() const;
|
||||
|
||||
// Implement isa/cast/dyncast/etc.
|
||||
static bool classof(const Decl *D) { return classofKind(D->getKind()); }
|
||||
static bool classof(const EnumConstantDecl *D) { return true; }
|
||||
|
|
|
@ -1766,6 +1766,13 @@ EnumConstantDecl *EnumConstantDecl::Create(ASTContext &C, EnumDecl *CD,
|
|||
return new (C) EnumConstantDecl(CD, L, Id, T, E, V);
|
||||
}
|
||||
|
||||
SourceRange EnumConstantDecl::getSourceRange() const {
|
||||
SourceLocation End = getLocation();
|
||||
if (Init)
|
||||
End = Init->getLocEnd();
|
||||
return SourceRange(getLocation(), End);
|
||||
}
|
||||
|
||||
TypedefDecl *TypedefDecl::Create(ASTContext &C, DeclContext *DC,
|
||||
SourceLocation L, IdentifierInfo *Id,
|
||||
TypeSourceInfo *TInfo) {
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
enum Color {
|
||||
Red,
|
||||
Green,
|
||||
Blue,
|
||||
|
||||
Rouge = Red
|
||||
};
|
||||
|
||||
// RUN: c-index-test -test-load-source all %s | FileCheck %s
|
||||
// CHECK: load-decls.c:1:6: EnumDecl=Color:1:6 (Definition) Extent=[1:1 - 7:2]
|
||||
// CHECK: load-decls.c:2:3: EnumConstantDecl=Red:2:3 (Definition) Extent=[2:3 - 2:6]
|
||||
// CHECK: load-decls.c:3:3: EnumConstantDecl=Green:3:3 (Definition) Extent=[3:3 - 3:8]
|
||||
// CHECK: load-decls.c:4:3: EnumConstantDecl=Blue:4:3 (Definition) Extent=[4:3 - 4:7]
|
||||
// CHECK: load-decls.c:6:3: EnumConstantDecl=Rouge:6:3 (Definition) Extent=[6:3 - 6:14]
|
||||
// CHECK: load-decls.c:6:11: UnexposedExpr=Red:2:3 Extent=[6:11 - 6:14]
|
||||
// CHECK: load-decls.c:6:11: DeclRefExpr=Red:2:3 Extent=[6:11 - 6:14]
|
Loading…
Reference in New Issue