Tencent / rapidjson

A fast JSON parser/generator for C++ with both SAX/DOM style API
http://rapidjson.org/
Other
14.23k stars 3.53k forks source link

Provided tests fail to compile #1205

Closed janisozaur closed 6 years ago

janisozaur commented 6 years ago

At f0177eb9 some of the provided tests enabled by default fail to compile.

[  1%] Built target doc
[  3%] Built target simplepullreader
[  6%] Built target tutorial
[  9%] Built target jsonx
[ 11%] Built target pretty
[ 14%] Built target condense
[ 16%] Built target simpledom
[ 19%] Built target messagereader
[ 22%] Built target simplewriter
[ 24%] Built target filterkeydom
[ 27%] Built target filterkey
[ 29%] Built target lookaheadparser
[ 32%] Built target capitalize
[ 35%] Built target parsebyparts
[ 37%] Built target prettyauto
[ 40%] Built target schemavalidator
[ 42%] Built target simplereader
[ 45%] Built target serialize
[ 45%] Built target examples
[ 49%] Built target archivertest
[ 51%] Built target namespacetest
[ 54%] Built target gtest
[ 57%] Built target gtest_main
[ 58%] Building CXX object test/unittest/CMakeFiles/unittest.dir/pointertest.cpp.o
In file included from /home/janisozaur/workspace/rapidjson/include/rapidjson/pointer.h:18,
                 from /home/janisozaur/workspace/rapidjson/test/unittest/pointertest.cpp:16:
/home/janisozaur/workspace/rapidjson/include/rapidjson/document.h: In instantiation of ‘rapidjson::GenericValue<Encoding, Allocator>* rapidjson::GenericValue<Encoding, Allocator>::Erase(rapidjson::GenericValue<Encoding, Allocator>::ConstValueIterator, rapidjson::GenericValue<Encoding, Allocator>::ConstValueIterator) [with Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>; rapidjson::GenericValue<Encoding, Allocator>::ValueIterator = rapidjson::GenericValue<rapidjson::UTF8<> >*; rapidjson::GenericValue<Encoding, Allocator>::ConstValueIterator = const rapidjson::GenericValue<rapidjson::UTF8<> >*]’:
/home/janisozaur/workspace/rapidjson/include/rapidjson/document.h:1701:34:   required from ‘rapidjson::GenericValue<Encoding, Allocator>* rapidjson::GenericValue<Encoding, Allocator>::Erase(rapidjson::GenericValue<Encoding, Allocator>::ConstValueIterator) [with Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>; rapidjson::GenericValue<Encoding, Allocator>::ValueIterator = rapidjson::GenericValue<rapidjson::UTF8<> >*; rapidjson::GenericValue<Encoding, Allocator>::ConstValueIterator = const rapidjson::GenericValue<rapidjson::UTF8<> >*]’
/home/janisozaur/workspace/rapidjson/include/rapidjson/pointer.h:749:13:   required from ‘bool rapidjson::GenericPointer<ValueType, Allocator>::Erase(ValueType&) const [with ValueType = rapidjson::GenericValue<rapidjson::UTF8<> >; Allocator = rapidjson::CrtAllocator]’
/home/janisozaur/workspace/rapidjson/test/unittest/pointertest.cpp:891:5:   required from here
/home/janisozaur/workspace/rapidjson/include/rapidjson/document.h:1722:21: error: ‘void* memmove(void*, const void*, size_t)’ writing to an object of type ‘class rapidjson::GenericValue<rapidjson::UTF8<> >’ with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Werror=class-memaccess]
         std::memmove(pos, last, static_cast<size_t>(End() - last) * sizeof(GenericValue));
         ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/janisozaur/workspace/rapidjson/include/rapidjson/document.h:577:7: note: ‘class rapidjson::GenericValue<rapidjson::UTF8<> >’ declared here
 class GenericValue {
       ^~~~~~~~~~~~
/home/janisozaur/workspace/rapidjson/include/rapidjson/document.h: In instantiation of ‘rapidjson::GenericValue<Encoding, Allocator>::MemberIterator rapidjson::GenericValue<Encoding, Allocator>::EraseMember(rapidjson::GenericValue<Encoding, Allocator>::ConstMemberIterator, rapidjson::GenericValue<Encoding, Allocator>::ConstMemberIterator) [with Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>; rapidjson::GenericValue<Encoding, Allocator>::MemberIterator = rapidjson::GenericMemberIterator<false, rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<> >; rapidjson::GenericValue<Encoding, Allocator>::ConstMemberIterator = rapidjson::GenericMemberIterator<true, rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<> >]’:
/home/janisozaur/workspace/rapidjson/include/rapidjson/document.h:1495:39:   required from ‘rapidjson::GenericValue<Encoding, Allocator>::MemberIterator rapidjson::GenericValue<Encoding, Allocator>::EraseMember(rapidjson::GenericValue<Encoding, Allocator>::ConstMemberIterator) [with Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>; rapidjson::GenericValue<Encoding, Allocator>::MemberIterator = rapidjson::GenericMemberIterator<false, rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<> >; rapidjson::GenericValue<Encoding, Allocator>::ConstMemberIterator = rapidjson::GenericMemberIterator<true, rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<> >]’
/home/janisozaur/workspace/rapidjson/include/rapidjson/document.h:1541:13:   required from ‘bool rapidjson::GenericValue<Encoding, Allocator>::EraseMember(const rapidjson::GenericValue<Encoding, SourceAllocator>&) [with SourceAllocator = rapidjson::MemoryPoolAllocator<>; Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>]’
/home/janisozaur/workspace/rapidjson/include/rapidjson/document.h:1530:29:   required from ‘bool rapidjson::GenericValue<Encoding, Allocator>::EraseMember(const Ch*) [with Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>; rapidjson::GenericValue<Encoding, Allocator>::Ch = char]’
/home/janisozaur/workspace/rapidjson/include/rapidjson/pointer.h:745:81:   required from ‘bool rapidjson::GenericPointer<ValueType, Allocator>::Erase(ValueType&) const [with ValueType = rapidjson::GenericValue<rapidjson::UTF8<> >; Allocator = rapidjson::CrtAllocator]’
/home/janisozaur/workspace/rapidjson/test/unittest/pointertest.cpp:891:5:   required from here
/home/janisozaur/workspace/rapidjson/include/rapidjson/document.h:1518:21: error: ‘void* memmove(void*, const void*, size_t)’ writing to an object of type ‘rapidjson::GenericMemberIterator<false, rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<> >::ValueType’ {aka ‘struct rapidjson::GenericMember<rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<> >’} with no trivial copy-assignment; use copy-assignment instead [-Werror=class-memaccess]
         std::memmove(&*pos, &*last, static_cast<size_t>(MemberEnd() - last) * sizeof(Member));
         ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/janisozaur/workspace/rapidjson/include/rapidjson/pointer.h:18,
                 from /home/janisozaur/workspace/rapidjson/test/unittest/pointertest.cpp:16:
/home/janisozaur/workspace/rapidjson/include/rapidjson/document.h:71:8: note: ‘rapidjson::GenericMemberIterator<false, rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<> >::ValueType’ {aka ‘struct rapidjson::GenericMember<rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<> >’} declared here
 struct GenericMember {
        ^~~~~~~~~~~~~
cc1plus: all warnings being treated as errors
make[2]: *** [test/unittest/CMakeFiles/unittest.dir/build.make:375: test/unittest/CMakeFiles/unittest.dir/pointertest.cpp.o] Error 1
[ 59%] Building CXX object test/unittest/CMakeFiles/unittest.dir/valuetest.cpp.o
In file included from /home/janisozaur/workspace/rapidjson/test/unittest/valuetest.cpp:16:
/home/janisozaur/workspace/rapidjson/include/rapidjson/document.h: In instantiation of ‘rapidjson::GenericValue<Encoding, Allocator>* rapidjson::GenericValue<Encoding, Allocator>::Erase(rapidjson::GenericValue<Encoding, Allocator>::ConstValueIterator, rapidjson::GenericValue<Encoding, Allocator>::ConstValueIterator) [with Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>; rapidjson::GenericValue<Encoding, Allocator>::ValueIterator = rapidjson::GenericValue<rapidjson::UTF8<> >*; rapidjson::GenericValue<Encoding, Allocator>::ConstValueIterator = const rapidjson::GenericValue<rapidjson::UTF8<> >*]’:
/home/janisozaur/workspace/rapidjson/test/unittest/valuetest.cpp:1112:59:   required from here
/home/janisozaur/workspace/rapidjson/include/rapidjson/document.h:1722:21: error: ‘void* memmove(void*, const void*, size_t)’ writing to an object of type ‘class rapidjson::GenericValue<rapidjson::UTF8<> >’ with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Werror=class-memaccess]
         std::memmove(pos, last, static_cast<size_t>(End() - last) * sizeof(GenericValue));
         ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/janisozaur/workspace/rapidjson/include/rapidjson/document.h:577:7: note: ‘class rapidjson::GenericValue<rapidjson::UTF8<> >’ declared here
 class GenericValue {
       ^~~~~~~~~~~~
/home/janisozaur/workspace/rapidjson/include/rapidjson/document.h: In instantiation of ‘rapidjson::GenericValue<Encoding, Allocator>::MemberIterator rapidjson::GenericValue<Encoding, Allocator>::EraseMember(rapidjson::GenericValue<Encoding, Allocator>::ConstMemberIterator, rapidjson::GenericValue<Encoding, Allocator>::ConstMemberIterator) [with Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>; rapidjson::GenericValue<Encoding, Allocator>::MemberIterator = rapidjson::GenericMemberIterator<false, rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<> >; rapidjson::GenericValue<Encoding, Allocator>::ConstMemberIterator = rapidjson::GenericMemberIterator<true, rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<> >]’:
/home/janisozaur/workspace/rapidjson/test/unittest/valuetest.cpp:1462:17:   required from ‘void TestObject(T&, Allocator&) [with T = rapidjson::GenericValue<rapidjson::UTF8<> >; Allocator = rapidjson::MemoryPoolAllocator<>]’
/home/janisozaur/workspace/rapidjson/test/unittest/valuetest.cpp:1497:28:   required from here
/home/janisozaur/workspace/rapidjson/include/rapidjson/document.h:1518:21: error: ‘void* memmove(void*, const void*, size_t)’ writing to an object of type ‘rapidjson::GenericMemberIterator<false, rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<> >::ValueType’ {aka ‘struct rapidjson::GenericMember<rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<> >’} with no trivial copy-assignment; use copy-assignment instead [-Werror=class-memaccess]
         std::memmove(&*pos, &*last, static_cast<size_t>(MemberEnd() - last) * sizeof(Member));
         ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/janisozaur/workspace/rapidjson/test/unittest/valuetest.cpp:16:
/home/janisozaur/workspace/rapidjson/include/rapidjson/document.h:71:8: note: ‘rapidjson::GenericMemberIterator<false, rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<> >::ValueType’ {aka ‘struct rapidjson::GenericMember<rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<> >’} declared here
 struct GenericMember {
        ^~~~~~~~~~~~~
cc1plus: all warnings being treated as errors
make[2]: *** [test/unittest/CMakeFiles/unittest.dir/build.make:639: test/unittest/CMakeFiles/unittest.dir/valuetest.cpp.o] Error 1
make[2]: Target 'test/unittest/CMakeFiles/unittest.dir/build' not remade because of errors.
make[1]: *** [CMakeFiles/Makefile2:2060: test/unittest/CMakeFiles/unittest.dir/all] Error 2
[ 61%] Building CXX object test/perftest/CMakeFiles/perftest.dir/schematest.cpp.o
/home/janisozaur/workspace/rapidjson/test/perftest/schematest.cpp: In member function ‘virtual void Schema::SetUp()’:
/home/janisozaur/workspace/rapidjson/test/perftest/schematest.cpp:26:25: error: ‘%s’ directive writing up to 4095 bytes into a region of size 1024 [-Werror=format-overflow=]
         sprintf(buffer, "%s%s", paths[i], filename);
                         ^~~~~~
/home/janisozaur/workspace/rapidjson/test/perftest/schematest.cpp:89:35:
             char* json = ReadFile(filename, jsonAllocator);
                                   ~~~~~~~~
/home/janisozaur/workspace/rapidjson/test/perftest/schematest.cpp:26:16: note: ‘sprintf’ output 1 or more bytes (assuming 4096) into a destination of size 1024
         sprintf(buffer, "%s%s", paths[i], filename);
         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1plus: all warnings being treated as errors
make[2]: *** [test/perftest/CMakeFiles/perftest.dir/build.make:159: test/perftest/CMakeFiles/perftest.dir/schematest.cpp.o] Error 1
make[2]: Target 'test/perftest/CMakeFiles/perftest.dir/build' not remade because of errors.
make[1]: *** [CMakeFiles/Makefile2:2001: test/perftest/CMakeFiles/perftest.dir/all] Error 2
make[1]: Target 'all' not remade because of errors.
make: *** [Makefile:141: all] Error 2
make: Target 'default_target' not remade because of errors.
miloyip commented 6 years ago

It seems due to some new warnings from some new compilers. Please provide the compiler information.

janisozaur commented 6 years ago

Current GCC 8, x86-64.

janisozaur commented 6 years ago

Ping

janisozaur commented 6 years ago

Any chance of getting this fixed?

janisozaur commented 6 years ago

This is still present in a0910358, are you guys looking into that?

miloyip commented 6 years ago

I haven't setup the environment for this. Can you make a PR?

janisozaur commented 6 years ago

https://github.com/Tencent/rapidjson/pull/1244 there you go

janisozaur commented 6 years ago

… another 3 weeks passed. @miloyip when are you going to fix this?

marehr commented 6 years ago

Is this a duplicate of #1086?

janisozaur commented 6 years ago

Partially it is. This issue mentions some more warnings than #1086, as found with GCC8.

RaoGuangxiang commented 1 year ago

fixed: git clone the latest, inteading of downloading in the release url.