diff --git a/include/llvm/ADT/ImmutableList.h b/include/llvm/ADT/ImmutableList.h index dd88023fd1f..baf86daa360 100644 --- a/include/llvm/ADT/ImmutableList.h +++ b/include/llvm/ADT/ImmutableList.h @@ -26,9 +26,9 @@ template class ImmutableListFactory; template class ImmutableListImpl : public FoldingSetNode { T Head; - ImmutableListImpl* Tail; + const ImmutableListImpl* Tail; - ImmutableListImpl(const T& head, ImmutableListImpl* tail = 0) + ImmutableListImpl(const T& head, const ImmutableListImpl* tail = 0) : Head(head), Tail(tail) {} friend class ImmutableListFactory; @@ -39,10 +39,10 @@ class ImmutableListImpl : public FoldingSetNode { public: const T& getHead() const { return Head; } - ImmutableListImpl* getTail() const { return Tail; } + const ImmutableListImpl* getTail() const { return Tail; } static inline void Profile(FoldingSetNodeID& ID, const T& H, - ImmutableListImpl* L){ + const ImmutableListImpl* L){ ID.AddPointer(L); ID.Add(H); } @@ -67,20 +67,20 @@ public: typedef ImmutableListFactory Factory; private: - ImmutableListImpl* X; + const ImmutableListImpl* X; public: // This constructor should normally only be called by ImmutableListFactory. // There may be cases, however, when one needs to extract the internal pointer // and reconstruct a list object from that pointer. - ImmutableList(ImmutableListImpl* x = 0) : X(x) {} + ImmutableList(const ImmutableListImpl* x = 0) : X(x) {} - ImmutableListImpl* getInternalPointer() const { + const ImmutableListImpl* getInternalPointer() const { return X; } class iterator { - ImmutableListImpl* L; + const ImmutableListImpl* L; public: iterator() : L(0) {} iterator(ImmutableList l) : L(l.getInternalPointer()) {} @@ -157,7 +157,7 @@ public: FoldingSetNodeID ID; void* InsertPos; - ListTy* TailImpl = Tail.getInternalPointer(); + const ListTy* TailImpl = Tail.getInternalPointer(); ListTy::Profile(ID, Head, TailImpl); ListTy* L = Cache.FindNodeOrInsertPos(ID, InsertPos);