[PATCH] D25363: [Sema] Store a SourceRange for multi-token builtin types

Malcolm Parsons via cfe-commits cfe-commits at lists.llvm.org
Thu Oct 20 06:30:48 PDT 2016


malcolm.parsons added inline comments.


================
Comment at: include/clang/AST/TypeLoc.h:533
+    } else {
+      BuiltinRange.setBegin(std::min(Range.getBegin(), BuiltinRange.getBegin()));
+      BuiltinRange.setEnd(std::max(Range.getEnd(), BuiltinRange.getEnd()));
----------------
I suspect that using `min` and `max` on `SourceLocation`s is only valid if both locations are in the same file.

Doing this
long.h:
```
long
```
unsigned.cpp:
```
unsigned
#include "long.h"
i;
```

causes
clang-query> match typeLoc()
...
clang-query: llvm/tools/clang/lib/Frontend/DiagnosticRenderer.cpp:273: clang::SourceLocation retrieveMacroLocation(clang::SourceLocation, clang::FileID, clang::FileID, const llvm::SmallVectorImpl<clang::FileID>&, bool, const clang::SourceManager*): Assertion `SM->getFileID(Loc) == MacroFileID' failed.

Is there a better way to combine `SourceRange`s, or should the final range be accumulated in DeclSpec.cpp?


https://reviews.llvm.org/D25363





More information about the cfe-commits mailing list