Closed Bug 1700027 Opened 4 years ago Closed 4 years ago

Cannot build on Windows due to "error: no matching constructor for initialization of 'mozilla::Keyframe'"

Categories

(Core :: XPCOM, defect, P1)

Desktop
Windows 10
defect

Tracking

()

RESOLVED DUPLICATE of bug 1699923

People

(Reporter: masayuki, Unassigned)

References

(Regression)

Details

(Keywords: regression)

I cannot build today's mozilla-central with the last ./mach bootstrap.

 2:00.55 In file included from Unified_cpp_dom_animation0.cpp:2:
 2:00.55 In file included from m:/src/dom/animation/Animation.cpp:7:
 2:00.55 In file included from m:/src/dom/animation/Animation.h:12:
 2:00.55 In file included from m:/fx64-dbg/dist/include\mozilla/AnimationPerformanceWarning.h:14:
 2:00.55 m:/fx64-dbg/dist/include/nsTArray.h(631,34): error: no matching constructor for initialization of 'mozilla::Keyframe'
 2:00.55     new (static_cast<void*>(aE)) E(std::forward<A>(aArg));
 2:00.55                                  ^ ~~~~~~~~~~~~~~~~~~~~~
 2:00.55 m:/fx64-dbg/dist/include/nsTArray.h(2665,16): note: in instantiation of function template specialization 'nsTArrayElementTraits<mozilla::Keyframe>::Construct<mozilla::nsTArrayBackInserter<mozilla::Keyframe, nsTArray<mozilla::Keyframe>> &>' requested here
 2:00.55   elem_traits::Construct(elem, std::forward<Item>(aItem));
 2:00.55                ^
 2:00.56 m:/fx64-dbg/dist/include/nsTArray.h(2803,24): note: in instantiation of function template specialization 'nsTArray_Impl<mozilla::Keyframe, nsTArrayInfallibleAllocator>::AppendElementInternal<nsTArrayInfallibleAllocator, mozilla::nsTArrayBackInserter<mozilla::Keyframe, nsTArray<mozilla::Keyframe>> &>' requested here
 2:00.56         this->template AppendElementInternal<InfallibleAlloc>(
 2:00.56                        ^
 2:00.56 m:/fx64-dbg/dist/include/nsTArray.h(3178,13): note: in instantiation of function template specialization 'nsTArray<mozilla::Keyframe>::AppendElement<mozilla::nsTArrayBackInserter<mozilla::Keyframe, nsTArray<mozilla::Keyframe>> &>' requested here
 2:00.56     mArray->AppendElement(std::forward<E2>(aValue));
 2:00.56             ^
 2:00.56 C:\PROGRA~2\MIB055~1\2019\PROFES~1\VC\Tools\MSVC\1428~1.299\include\xutility(1500,13): note: in instantiation of function template specialization 'mozilla::nsTArrayBackInserter<mozilla::Keyframe, nsTArray<mozilla::Keyframe>>::operator=<mozilla::nsTArrayBackInserter<mozilla::Keyframe, nsTArray<mozilla::Keyframe>> &>' requested here
 2:00.56         _It = _STD forward<_UIter>(_UIt);
 2:00.56             ^
 2:00.56 m:/src/dom/animation/KeyframeUtils.cpp(1039,8): note: in instantiation of function template specialization 'std::transform<detail::nsTHashtableEntryIterator<nsBaseHashtableET<nsFloatHashKey, mozilla::Keyframe>>, mozilla::nsTArrayBackInserter<mozilla::Keyframe, nsTArray<mozilla::Keyframe>>, (lambda at m:/src/dom/animation/KeyframeUtils.cpp:1040:45)>' requested here
 2:00.56   std::transform(processedKeyframes.begin(), processedKeyframes.end(),
 2:00.56        ^
 2:00.56 m:/fx64-dbg/dist/include\mozilla/Keyframe.h(65,3): note: candidate constructor not viable: no known conversion from 'mozilla::nsTArrayBackInserter<mozilla::Keyframe, nsTArray<mozilla::Keyframe>>' to 'const mozilla::Keyframe' for 1st argument
 2:00.56   Keyframe(const Keyframe& aOther) = default;
 2:00.56   ^
 2:00.56 m:/fx64-dbg/dist/include\mozilla/Keyframe.h(66,3): note: candidate constructor not viable: no known conversion from 'mozilla::nsTArrayBackInserter<mozilla::Keyframe, nsTArray<mozilla::Keyframe>>' to 'mozilla::Keyframe' for 1st argument
 2:00.56   Keyframe(Keyframe&& aOther) = default;
 2:00.56   ^
 2:00.56 m:/fx64-dbg/dist/include\mozilla/Keyframe.h(64,3): note: candidate constructor not viable: requires 0 arguments, but 1 was provided
 2:00.56   Keyframe() = default;
 2:00.56   ^

my mozconfig file is:

export CC="clang-cl.exe"
export CXX="clang-cl.exe"
export LINKER="lld-link.exe"

mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../fx64-dbg
mk_add_options MOZ_MAKE_FLAGS="-j32"
mk_add_options AUTOCLOBBER=1

ac_add_options --target=i686-pc-mingw32

ac_add_options --enable-rust-simd
ac_add_options --enable-debug
ac_add_options --enable-clang-plugin
Severity: -- → S1
Priority: P1 → --

I also found this error:

0:28.13 In file included from Unified_cpp_dom_cache1.cpp:2:
 0:28.13 In file included from m:/src/dom/cache/Context.cpp:7:
 0:28.13 In file included from m:/fx64-dbg/dist/include\mozilla/dom/cache/Context.h:10:
 0:28.13 In file included from m:/fx64-dbg/dist/include\mozilla/dom/SafeRefPtr.h:10:
 0:28.13 In file included from m:/fx64-dbg/dist/include\mozilla/ArrayAlgorithm.h:10:
 0:28.13 m:/fx64-dbg/dist/include/nsTArray.h(631,34): error: no matching constructor for initialization of 'nsID'
 0:28.13     new (static_cast<void*>(aE)) E(std::forward<A>(aArg));
 0:28.13                                  ^ ~~~~~~~~~~~~~~~~~~~~~
 0:28.13 m:/fx64-dbg/dist/include/nsTArray.h(2665,16): note: in instantiation of function template specialization 'nsTArrayElementTraits<nsID>::Construct<mozilla::nsTArrayBackInserter<nsID, nsTArray<nsID>> &>' requested here
 0:28.13   elem_traits::Construct(elem, std::forward<Item>(aItem));
 0:28.13                ^
 0:28.13 m:/fx64-dbg/dist/include/nsTArray.h(2803,24): note: in instantiation of function template specialization 'nsTArray_Impl<nsID, nsTArrayInfallibleAllocator>::AppendElementInternal<nsTArrayInfallibleAllocator, mozilla::nsTArrayBackInserter<nsID, nsTArray<nsID>> &>' requested here
 0:28.13         this->template AppendElementInternal<InfallibleAlloc>(
 0:28.13                        ^
 0:28.13 m:/fx64-dbg/dist/include/nsTArray.h(3178,13): note: in instantiation of function template specialization 'nsTArray<nsID>::AppendElement<mozilla::nsTArrayBackInserter<nsID, nsTArray<nsID>> &>' requested here
 0:28.13     mArray->AppendElement(std::forward<E2>(aValue));
 0:28.14             ^
 0:28.14 C:\PROGRA~2\MIB055~1\2019\PROFES~1\VC\Tools\MSVC\1428~1.299\include\xutility(1500,13): note: in instantiation of function template specialization 'mozilla::nsTArrayBackInserter<nsID, nsTArray<nsID>>::operator=<mozilla::nsTArrayBackInserter<nsID, nsTArray<nsID>> &>' requested here
 0:28.14         _It = _STD forward<_UIter>(_UIt);
 0:28.14             ^
 0:28.14 m:/src/dom/cache/Manager.cpp(2058,8): note: in instantiation of function template specialization 'std::copy_if<mozilla::ArrayIterator<const nsID &, nsTArray_Impl<nsID, nsTArrayInfallibleAllocator>>, mozilla::nsTArrayBackInserter<nsID, nsTArray<nsID>>, (lambda at m:/src/dom/cache/Manager.cpp:2060:16)>' requested here
 0:28.14   std::copy_if(aDeletedBodyIdList.cbegin(), aDeletedBodyIdList.cend(),
 0:28.14        ^
 0:28.14 m:/fx64-dbg/dist/include\nsID.h(20,8): note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'mozilla::nsTArrayBackInserter<nsID, nsTArray<nsID>>' to 'const nsID' for 1st argument  
 0:28.14 struct nsID {
 0:28.14        ^
 0:28.14 m:/fx64-dbg/dist/include\nsID.h(20,8): note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'mozilla::nsTArrayBackInserter<nsID, nsTArray<nsID>>' to 'nsID' for 1st argument        
 0:28.14 m:/fx64-dbg/dist/include\nsID.h(20,8): note: candidate constructor (the implicit default constructor) not viable: requires 0 arguments, but 1 was provided

So, I guess this is a regression of changes around array?

The first revision which I cannot build mozilla-central is:
https://hg.mozilla.org/mozilla-central/rev/6dc1a1cd5f25c88f393fcb84b904bbcdd0eba683

Component: DOM: Animation → XPCOM
Flags: needinfo?(sgiesecke)
Regressed by: 1184468
Has Regression Range: --- → yes
Priority: -- → P1
Status: NEW → RESOLVED
Closed: 4 years ago
Resolution: --- → DUPLICATE

If that helps, here's a small patch I'm using locally in order to build, until bug 1699923 gets a proper fix: https://hg.mozilla.org/try/rev/c970ca811c0f00797336504cefe7ff85bcca7148

Flags: needinfo?(sgiesecke)
You need to log in before you can comment on or make changes to this bug.