From 26cc0377bc4abc941a5ed1f35ebd8793d7b5a411 Mon Sep 17 00:00:00 2001 From: Mike Aizatsky Date: Thu, 17 Mar 2016 23:32:20 +0000 Subject: [PATCH] Revert "allow lambdas in mapped_iterator" MSVC as usual: C:\Buildbot\Slave\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.src\include\llvm/ADT/STLExtras.h(120): error C2100: illegal indirection C:\Buildbot\Slave\llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast\llvm.src\include\llvm/IR/Instructions.h(3966): note: see reference to class template instantiation 'llvm::mapped_iterator' being compiled This reverts commit e091dd63f1f34e043748e28ad160d3bc17731168. llvm-svn: 263760 --- llvm/include/llvm/ADT/STLExtras.h | 2 +- llvm/unittests/ADT/CMakeLists.txt | 1 - llvm/unittests/ADT/MappedIteratorTest.cpp | 51 ------------------------------- 3 files changed, 1 insertion(+), 53 deletions(-) delete mode 100644 llvm/unittests/ADT/MappedIteratorTest.cpp diff --git a/llvm/include/llvm/ADT/STLExtras.h b/llvm/include/llvm/ADT/STLExtras.h index e40a29f..28f7594 100644 --- a/llvm/include/llvm/ADT/STLExtras.h +++ b/llvm/include/llvm/ADT/STLExtras.h @@ -117,7 +117,7 @@ public: iterator_category; typedef typename std::iterator_traits::difference_type difference_type; - typedef decltype(Fn(*current)) value_type; + typedef typename UnaryFunc::result_type value_type; typedef void pointer; //typedef typename UnaryFunc::result_type *pointer; diff --git a/llvm/unittests/ADT/CMakeLists.txt b/llvm/unittests/ADT/CMakeLists.txt index 1388f5d0..bce1bf9 100644 --- a/llvm/unittests/ADT/CMakeLists.txt +++ b/llvm/unittests/ADT/CMakeLists.txt @@ -22,7 +22,6 @@ set(ADTSources IntervalMapTest.cpp IntrusiveRefCntPtrTest.cpp MakeUniqueTest.cpp - MappedIteratorTest.cpp MapVectorTest.cpp OptionalTest.cpp PackedVectorTest.cpp diff --git a/llvm/unittests/ADT/MappedIteratorTest.cpp b/llvm/unittests/ADT/MappedIteratorTest.cpp deleted file mode 100644 index 8c6a103..0000000 --- a/llvm/unittests/ADT/MappedIteratorTest.cpp +++ /dev/null @@ -1,51 +0,0 @@ -//===- llvm/unittest/ADT/APInt.cpp - APInt unit tests ---------------------===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// - -#include - -#include "llvm/ADT/STLExtras.h" -#include "llvm/ADT/iterator_range.h" -#include "gtest/gtest.h" - -using namespace llvm; - -namespace { - -template -auto map_range(const T &range, Fn fn) - -> decltype(make_range(map_iterator(range.begin(), fn), - map_iterator(range.end(), fn))) { - return make_range(map_iterator(range.begin(), fn), - map_iterator(range.end(), fn)); -} - -static char add1(char C) { return C + 1; } - -TEST(MappedIterator, FnTest) { - std::string S("abc"); - std::string T; - - for (char C : map_range(S, add1)) { - T.push_back(C); - } - - EXPECT_STREQ("bcd", T.c_str()); -} - -TEST(MappedIterator, LambdaTest) { - std::string S("abc"); - std::string T; - - for (char C : map_range(S, [](char C) { return C + 1; })) { - T.push_back(C); - } - - EXPECT_STREQ("bcd", T.c_str()); -} -} -- 2.7.4