On 9/25/23 08:30, Miklos Vajna wrote:
gcc-12 looks fine here, but I hit an interesting problem with clang-15
(which worked fine before pulling):
$ make animations
make -j 16 -f
/home/vmiklos/git/libreoffice/core-clang/compilerplugins/Makefile-clang.mk
compilerplugins
make[1]: Entering directory '/home/vmiklos/git/libreoffice/core-clang'
make[1]: Nothing to be done for 'compilerplugins'.
make[1]: Leaving directory '/home/vmiklos/git/libreoffice/core-clang'
cd /home/vmiklos/git/libreoffice/core-clang/animations && make -j 16 -rs
[CXX] animations/source/animcore/animcore.cxx
[LOC] top level modules: animations
In file included from
/home/vmiklos/git/libreoffice/core-clang/animations/source/animcore/animcore.cxx:20:
In file included from
/home/vmiklos/git/libreoffice/core-clang/workdir/UnoApiHeadersTarget/offapi/normal/com/sun/star/util/XCloneable.hpp:8:
/home/vmiklos/git/libreoffice/core-clang/workdir/UnoApiHeadersTarget/udkapi/normal/com/sun/star/uno/XInterface.hpp:32:65:
error: invalid application of 'sizeof' to an incomplete type
'animcore::(anonymous namespace)::AnimationNode'
template<typename T> inline constexpr auto isUnoInterfaceType = sizeof (T) &&
IsUnoInterfaceType<T>::value;
^~~~~~~~~~
/home/vmiklos/git/libreoffice/core-clang/include/unotools/weakref.hxx:119:33:
note: in instantiation of variable template specialization
'cppu::detail::isUnoInterfaceType' requested here
requires(!cppu::detail::isUnoInterfaceType<interface_type>)
^
/home/vmiklos/git/libreoffice/core-clang/animations/source/animcore/animcore.cxx:309:44:
note: in instantiation of template class
'unotools::WeakReference<animcore::(anonymous namespace)::AnimationNode>'
requested here
unotools::WeakReference<AnimationNode> mxParent;
^
/home/vmiklos/git/libreoffice/core-clang/animations/source/animcore/animcore.cxx:121:7:
note: definition of 'animcore::(anonymous namespace)::AnimationNode' is not
complete until the closing '}'
class AnimationNode final: public AnimationNodeBase
^
1 error generated.
make[1]: ***
[/home/vmiklos/git/libreoffice/core-clang/solenv/gbuild/LinkTarget.mk:340:
/home/vmiklos/git/libreoffice/core-clang/workdir/CxxObject/animations/source/animcore/animcore.o]
Error 1
make: *** [Makefile:121: animations] Error 2
Given that AnimationNode refers to itself, we probably can't provide a
full type for unotools::WeakReference. But then how to get around this?
Was that maybe an intermittent Clang bug? It apparently doesn't hit the
Jenkins Clang builds, and I don't see it with trunk Clang 18 either, but
have dim memories that there was some issue with too-eager evaluation
causing something like this at some point. Do you have a way to check
with another Clang version, to substantiate that assumption?