8000 IAR Embedded Workbench Compiler Error · Issue #2001 · bblanchon/ArduinoJson · GitHub
[go: up one dir, main page]

Skip to content
IAR Embedded Workbench Compiler Error #2001
@thomas-bernhard

Description

@thomas-bernhard

Describe the bug
The ArduinoJson Library does not compile using the IAR Embedded Workbench for versions 20.0 and newer. Version 19.4 compiles without any errors or warnings. We already reached out to the support, who could reproduce the error with the current version (EWARM 9.40.2) and with version EWSYN 8.23.3. Both show the same error.

Troubleshooter report
Here is the report generated by the ArduinoJson Troubleshooter:

  1. The program uses ArduinoJson 21.3
  2. The issue happens at compile time
  3. The error is not in the list

Environment
Here is the environment that I used:

  • EWSYN 8.23.3
  • Renesas Synergy R7FS5

Reproduction
Here is a small snippet that reproduces the issue.

char json[] = "{\"sensor\":\"gps\",\"time\":1351824120,\"data\":[48.756080,2.302038]}";

DynamicJsonDocument doc(1024);
deserializeJson(doc, json);

const char* sensor = doc["sensor"];
long time          = doc["time"];
double latitude    = doc["data"][0];
double longitude   = doc["data"][1];

Compiler output

Building configuration: GPT_HAL_MG_AP - Debug 
Updating build tree... 
json_test.cpp  
Warning[Pe1346]: function returns incomplete class type "ArduinoJson::V6213DB2::JsonVariant" C:\Users\...\src\ArduinoJson-v6.21.3.hpp 2551 
Warning[Pe1346]: function returns incomplete class type "ArduinoJson::V6213DB2::JsonVariant" C:\Users\...\src\ArduinoJson-v6.21.3.hpp 2569 
Warning[Pe1346]: function returns incomplete class type "ArduinoJson::V6213DB2::JsonVariant" C:\Users\...\src\ArduinoJson-v6.21.3.hpp 2591 
Warning[Pe1346]: function returns incomplete class type "ArduinoJson::V6213DB2::JsonVariant" C:\Users\...\src\ArduinoJson-v6.21.3.hpp 2597 
Error[Pe304]: no instance of overloaded function "ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::as [with TDerived=ArduinoJson::V6213DB2::JsonVariant]" matches the argument list C:\Users\...\src\ArduinoJson-v6.21.3.hpp 2555 
          detected during: 
            instantiation of "inline ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::operator T() const [with TDerived=ArduinoJson::V6213DB2::JsonVariant, T=ArduinoJson::V6213DB2::JsonVariant]" at line 2669 
            instantiation of "inline TDerived const &ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::derived() const [with TDerived=ArduinoJson::V6213DB2::JsonVariant]" at line 2672 
            instantiation of "inline __interwork __softfp ArduinoJson::V6213DB2::detail::MemoryPool *ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::getPool() const [with  
TDerived=ArduinoJson::V6213DB2::JsonVariant]" at line 2592 
            instantiation of "inline bool ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::set(T const &) const [with TDerived=ArduinoJson::V6213DB2::JsonVariant, T=ArduinoJson::V6213DB2::JsonVariantConst]" at  
line 3546 
Warning[Pe430]: returning reference to local temporary C:\Users\...\src\ArduinoJson-v6.21.3.hpp 2669 
          detected during: 
            instantiation of "inline TDerived const &ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::derived() const [with TDerived=ArduinoJson::V6213DB2::JsonVariant]" at line 2672 
            instantiation of "inline __interwork __softfp ArduinoJson::V6213DB2::detail::MemoryPool *ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::getPool() const [with  
TDerived=ArduinoJson::V6213DB2::JsonVariant]" at line 2592 
            instantiation of "inline bool ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::set(T const &) const [with TDerived=ArduinoJson::V6213DB2::JsonVariant, T=ArduinoJson::V6213DB2::JsonVariantConst]" at  
line 3546 
Warning[Pe540]: support for exception handling is disabled C:\Users\...\src\ArduinoJson-v6.21.3.hpp 5496 
Error[Pe291]: no default constructor exists for class "ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>" C:\Users\...\src\ArduinoJson-v6.21.3.hpp 4687 
          detected during: 
            instantiation of "inline T ArduinoJson::V6213DB2::Converter<T, Enable>::fromJson(ArduinoJson::V6213DB2::JsonVariantConst) [with  
T=ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>, Enable=void]" at line 2546 
            instantiation of "inline ArduinoJson::V6213DB2::detail::enable_if<<expression>, T>::type ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::as<T>() const [with  
TDerived=ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>, T=ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char  
const *>]" at line 2555 
            instantiation of "inline ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::operator T() const [with TDerived=ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char  
const *>, T=ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>]" at line 2669 
            instantiation of "inline TDerived const &ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::derived() const [with  
TDerived=ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>]" at line 2675 
            instantiation of "inline __interwork __softfp ArduinoJson::V6213DB2::detail::VariantData *ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::getData() const [with  
TDerived=ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>]" at line 2683 
            instantiation of "inline __interwork __softfp ArduinoJson::V6213DB2::JsonVariantConst ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::getVariantConst() const [with  
TDerived=ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>]" at line 2546 
            instantiation of "inline ArduinoJson::V6213DB2::detail::enable_if<<expression>, T>::type ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::as<T>() const [with  
TDerived=ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>, T=char const *]" at line 2555 
            instantiation of "inline ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::operator T() const [with TDerived=ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char  
const *>, T=char const *]" at line 13 of "C:\Users\...\src\json_test.cpp" 
Error[Pe434]: a reference of type "std::string &" (not const-qualified) cannot be initialized with a value of type "ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>" C:\Users\...\src\ArduinoJson-v6.21.3.hpp 4688 
          detected during: 
            instantiation of "inline T ArduinoJson::V6213DB2::Converter<T, Enable>::fromJson(ArduinoJson::V6213DB2::JsonVariantConst) [with  
T=ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>, Enable=void]" at line 2546 
            instantiation of "inline ArduinoJson::V6213DB2::detail::enable_if<<expression>, T>::type ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::as<T>() const [with  
TDerived=ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>, T=ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char  
const *>]" at line 2555 
            instantiation of "inline ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::operator T() const [with TDerived=ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char  
const *>, T=ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>]" at line 2669 
            instantiation of "inline TDerived const &ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::derived() const [with  
TDerived=ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>]" at line 2675 
            instantiation of "inline __interwork __softfp ArduinoJson::V6213DB2::detail::VariantData *ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::getData() const [with  
TDerived=ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>]" at line 2683 
            instantiation of "inline __interwork __softfp ArduinoJson::V6213DB2::JsonVariantConst ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::getVariantConst() const [with  
TDerived=ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>]" at line 2546 
            instantiation of "inline ArduinoJson::V6213DB2::detail::enable_if<<expression>, T>::type ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::as<T>() const [with  
TDerived=ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>, T=char const *]" at line 2555 
            instantiation of "inline ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::operator T() const [with TDerived=ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char  
const *>, T=char const *]" at line 13 of "C:\Users\...\src\json_test.cpp" 
Warning[Pe430]: returning reference to local temporary C:\Users\...\src\ArduinoJson-v6.21.3.hpp 2669 
          detected during: 
            instantiation of "inline TDerived const &ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::derived() const [with  
TDerived=ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>]" at line 2675 
            instantiation of "inline __interwork __softfp ArduinoJson::V6213DB2::detail::VariantData *ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::getData() const [with  
TDerived=ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>]" at line 2683 
            instantiation of "inline __interwork __softfp ArduinoJson::V6213DB2::JsonVariantConst ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::getVariantConst() const [with  
TDerived=ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>]" at line 2546 
            instantiation of "inline ArduinoJson::V6213DB2::detail::enable_if<<expression>, T>::type ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::as<T>() const [with  
TDerived=ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>, T=char const *]" at line 2555 
            instantiation of "inline ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::operator T() const [with TDerived=ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char  
const *>, T=char const *]" at line 13 of "C:\Users\...\src\json_test.cpp" 
Error[Pe291]: no default constructor exists for class "ArduinoJson::V6213DB2::detail::ElementProxy<ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>>" C:\Users\...\src\ArduinoJson-v6.21.3.hpp 4687 
          detected during:
            instantiation of "inline T ArduinoJson::V6213DB2::Converter<T, Enable>::fromJson(ArduinoJson::V6213DB2::JsonVariantConst) [with  
T=ArduinoJson::V6213DB2::detail::ElementProxy<ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>>, Enable=void]" at line 2546 
            instantiation of "inline ArduinoJson::V6213DB2::detail::enable_if<<expression>, T>::type ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::as<T>() const [with  
TDerived=ArduinoJson::V6213DB2::detail::ElementProxy<ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>>,  
T=ArduinoJson::V6213DB2::detail::ElementProxy<ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>>]" at line 2555 
            instantiation of "inline ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::operator T() const [with  
TDerived=ArduinoJson::V6213DB2::detail::ElementProxy<ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>>,  
T=ArduinoJson::V6213DB2::detail::ElementProxy<ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>>]" at line 2669 
            instantiation of "inline TDerived const &ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::derived() const [with  
TDerived=ArduinoJson::V6213DB2::detail::ElementProxy<ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>>]" at line 2675 
            instantiation of "inline __interwork __softfp ArduinoJson::V6213DB2::detail::VariantData *ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::getData() const [with  
TDerived=ArduinoJson::V6213DB2::detail::ElementProxy<ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>>]" at line 2683 
            instantiation of "inline __interwork __softfp ArduinoJson::V6213DB2::JsonVariantConst ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::getVarian
743A
tConst() const [with  
TDerived=ArduinoJson::V6213DB2::detail::ElementProxy<ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>>]" at line 2546 
            instantiation of "inline ArduinoJson::V6213DB2::detail::enable_if<<expression>, T>::type ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::as<T>() const [with  
TDerived=ArduinoJson::V6213DB2::detail::ElementProxy<ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>>, T=double]" at line 2555 
            instantiation of "inline ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::operator T() const [with  
TDerived=ArduinoJson::V6213DB2::detail::ElementProxy<ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>>, T=double]" at line 15 of "C:\Users\...\src\json_test.cpp" 
Error[Pe434]: a reference of type "std::string &" (not const-qualified) cannot be initialized with a value of type  C:\Users\...\src\ArduinoJson-v6.21.3.hpp 4688 
"ArduinoJson::V6213DB2::detail::ElementProxy<ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>>" 
          detected during: 
            instantiation of "inline T ArduinoJson::V6213DB2::Converter<T, Enable>::fromJson(ArduinoJson::V6213DB2::JsonVariantConst) [with  
T=ArduinoJson::V6213DB2::detail::ElementProxy<ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>>, Enable=void]" at line 2546 
            instantiation of "inline ArduinoJson::V6213DB2::detail::enable_if<<expression>, T>::type ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::as<T>() const [with  
TDerived=ArduinoJson::V6213DB2::detail::ElementProxy<ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>>,  
T=ArduinoJson::V6213DB2::detail::ElementProxy<ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>>]" at line 2555 
            instantiation of "inline ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::operator T() const [with  
TDerived=ArduinoJson::V6213DB2::detail::ElementProxy<ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>>,  
T=ArduinoJson::V6213DB2::detail::ElementProxy<ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>>]" at line 2669 
            instantiation of "inline TDerived const &ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::derived() const [with  
TDerived=ArduinoJson::V6213DB2::detail::ElementProxy<ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>>]" at line 2675 
            instantiation of "inline __interwork __softfp ArduinoJson::V6213DB2::detail::VariantData *ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::getData() const [with  
TDerived=ArduinoJson::V6213DB2::detail::ElementProxy<ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>>]" at line 2683 
            instantiation of "inline __interwork __softfp ArduinoJson::V6213DB2::JsonVariantConst ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::getVariantConst() const [with  
TDerived=ArduinoJson::V6213DB2::detail::ElementProxy<ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>>]" at line 2546 
            instantiation of "inline ArduinoJson::V6213DB2::detail::enable_if<<expression>, T>::type ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::as<T>() const [with  
TDerived=ArduinoJson::V6213DB2::detail::ElementProxy<ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>>, T=double]" at line 2555 
            instantiation of "inline ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::operator T() const [with  
TDerived=ArduinoJson::V6213DB2::detail::ElementProxy<ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>>, T=double]" at line 15 of "C:\Users\...\src\json_test.cpp" 
Warning[Pe430]: returning reference to local temporary C:\Users\...\src\ArduinoJson-v6.21.3.hpp 2669 
          detected during: 
            instantiation of "inline TDerived const &ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::derived() const [with  
TDerived=ArduinoJson::V6213DB2::detail::ElementProxy<ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>>]" at line 2675 
            instantiation of "inline __interwork __softfp ArduinoJson::V6213DB2::detail::VariantData *ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::getData() const [with  
TDerived=ArduinoJson::V6213DB2::detail::ElementProxy<ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>>]" at line 2683 
            instantiation of "inline __interwork __softfp ArduinoJson::V6213DB2::JsonVariantConst ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::getVariantConst() const [with  
TDerived=ArduinoJson::V6213DB2::detail::ElementProxy<ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>>]" at line 2546 
            instantiation of "inline ArduinoJson::V6213DB2::detail::enable_if<<expression>, T>::type ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::as<T>() const [with  
TDerived=ArduinoJson::V6213DB2::detail::ElementProxy<ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>>, T=double]" at line 2555 
            instantiation of "inline ArduinoJson::V6213DB2::detail::VariantRefBase<TDerived>::operator T() const [with  
TDerived=ArduinoJson::V6213DB2::detail::ElementProxy<ArduinoJson::V6213DB2::detail::MemberProxy<ArduinoJson::V6213DB2::JsonDocument &, char const *>>, T=double]" at line 15 of "C:\Users\...\src\json_test.cpp" 
Error while running C/C++ Compiler 
 
Total number of errors: 5 
Total number of warnings: 8 

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugv6ArduinoJson 6

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0