Fix some MSVC 2017 errors

Thanks to Dso Tsin!
This commit is contained in:
Fangrui Song 2018-11-11 01:10:15 -08:00
parent eeeb03c068
commit 5736dd094d
4 changed files with 8 additions and 11 deletions

View File

@ -45,7 +45,8 @@ static Pos Decomposed2LineAndCol(const SourceManager &SM,
std::pair<FileID, unsigned> I) { std::pair<FileID, unsigned> I) {
int l = SM.getLineNumber(I.first, I.second) - 1, int l = SM.getLineNumber(I.first, I.second) - 1,
c = SM.getColumnNumber(I.first, I.second) - 1; c = SM.getColumnNumber(I.first, I.second) - 1;
return {(int16_t)std::min(l, INT16_MAX), (int16_t)std::min(c, INT16_MAX)}; return {(int16_t)std::min<int>(l, INT16_MAX),
(int16_t)std::min<int>(c, INT16_MAX)};
} }
Range FromCharSourceRange(const SourceManager &SM, const LangOptions &LangOpts, Range FromCharSourceRange(const SourceManager &SM, const LangOptions &LangOpts,

View File

@ -18,6 +18,7 @@ limitations under the License.
#include "log.hh" #include "log.hh"
#include "serializers/json.hh" #include "serializers/json.hh"
#include <algorithm>
#include <stdio.h> #include <stdio.h>
namespace ccls { namespace ccls {

View File

@ -17,6 +17,7 @@ limitations under the License.
#include "serializer.hh" #include "serializer.hh"
#include <algorithm>
#include <limits.h> #include <limits.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
@ -57,14 +58,10 @@ Range Range::FromString(const std::string &encoded) {
bool Range::Contains(int line, int column) const { bool Range::Contains(int line, int column) const {
if (line > INT16_MAX) if (line > INT16_MAX)
return false; return false;
Pos p{int16_t(line), int16_t(std::min(column, INT16_MAX))}; Pos p{(int16_t)line, (int16_t)std::min<int>(column, INT16_MAX)};
return !(p < start) && p < end; return !(p < start) && p < end;
} }
Range Range::RemovePrefix(Pos position) const {
return {std::min(std::max(position, start), end), end};
}
std::string Range::ToString() { std::string Range::ToString() {
char buf[99]; char buf[99];
snprintf(buf, sizeof buf, "%d:%d-%d:%d", start.line + 1, start.column + 1, snprintf(buf, sizeof buf, "%d:%d-%d:%d", start.line + 1, start.column + 1,

View File

@ -52,7 +52,6 @@ struct Range {
bool Valid() const { return start.Valid(); } bool Valid() const { return start.Valid(); }
bool Contains(int line, int column) const; bool Contains(int line, int column) const;
Range RemovePrefix(Pos position) const;
std::string ToString(); std::string ToString();
@ -76,12 +75,11 @@ void Reflect(Writer &visitor, Range &value);
namespace std { namespace std {
template <> struct hash<ccls::Range> { template <> struct hash<ccls::Range> {
std::size_t operator()(ccls::Range x) const { std::size_t operator()(ccls::Range x) const {
union U { union {
ccls::Range range = {}; ccls::Range range;
uint64_t u64; uint64_t u64;
} u; } u{x};
static_assert(sizeof(ccls::Range) == 8); static_assert(sizeof(ccls::Range) == 8);
u.range = x;
return hash<uint64_t>()(u.u64); return hash<uint64_t>()(u.u64);
} }
}; };