It looks like you are compiling with and EDG-based compiler front end. EDG can indeed be more strict than other compilers in some cases. My experience is typically (though not certainly) that when EDG gives you an error like below then it is correct. So you probably have a case of code that in some sense is not entirely correct but GCC and VC++ are accepting it. Often these kinds of things have to do with implicit conversions, argument-dependent-lookup, or some tricky friend/namespace kind of thing.

I don't yet have my EDG compiler pointing at WebKit, so I can't try this on my side. However, to debug this I would investigate the operands. It is saying that there is no operator ==, so what you want to do is look at the explicit operand types. In other words, what exactly is the type of Extractor::extract(value) and KeyTraits::emptyValue? They probably aren't the exact same type and so there may be an implicit conversion expected or there may be a custom operator == to deal with the types. So find out what operator == *is intended* to execute and with what operands. What are the namespaces of the operands? Are there conversions required? etc. Making an operator== that has exact type matches probably fixes the problem.

Paul


Hi,
        I am trying to build WebKit release version 31916 (sorry for using such an old version :-) ) using arm compiler. The compiler appears to be very strict and as a result, I am getting several errors. If anyone has encountered the following errors or has any suggestions, please let me know.
 
        Here are the errors seen while compiling /WebCore/dom/StyledElement.cpp. I am also attaching the complete build log.
 
1. "\\WebKit\JavaScriptCore\wtf/HashTable.h", line 334: Error:  #349: no operator "==" matches these operands
            operand types are: const std::pair<WTF::GenericHashTraitsBase<false, WebCore::MappedAttributeKey>::TraitType, WTF::GenericHashTraitsBase<true, int>::TraitType>::first_type == WebCore::MappedAttributeKey
          static bool isEmptyBucket(const ValueType& value) { return Extractor::extract(value) == KeyTraits::emptyValue(); }
 
2. \\WebKit\JavaScriptCore\wtf/HashTable.h", line 335: Error:  #349: no operator "==" matches these operands
            operand types are: const std::pair<WTF::GenericHashTraitsBase<false, WebCore::MappedAttributeKey>::TraitType, WTF::GenericHashTraitsBase<true, int>::TraitType>::first_type == WebCore::MappedAttributeKey
          static bool isDeletedBucket(const ValueType& value) { return Extractor::extract(value) == KeyTraits::deletedValue(); }
 
3. "\\WebKit\JavaScriptCore\wtf/HashMap.h", line 154: Error:  #349: no operator "==" matches these operands
            operand types are: WTF::GenericHashTraitsBase<false, WebCore::MappedAttributeKey>::TraitType == WebCore::MappedAttributeKey
              if (location.first == KeyStorageTraits::deletedValue())
 
          Note:- I have already tried to use the bug fix which went in Revision 32609 (rdar://problem/5657459), however, my issues were still not fixed.
 
Thanks,
Tuheen

_______________________________________________ webkit-dev mailing list webkit-dev@lists.webkit.org http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev