Closed Bug 692782 Opened 12 years ago Closed 12 years ago

Bug 690670 broke clang builds

Categories

(Core :: XPCOM, defect)

x86
macOS
defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla10

People

(Reporter: ehsan.akhgari, Assigned: ehsan.akhgari)

References

Details

Attachments

(1 file)

In file included from /Users/ehsanakhgari/moz/mozilla-central/hal/sandbox/SandboxHal.cpp:1:
In file included from /Users/ehsanakhgari/moz/mozilla-central/hal/sandbox/SandboxHal.cpp:41:
In file included from /Users/ehsanakhgari/moz/mozilla-central/hal/Hal.h:45:
../dist/include/nsTArray.h:1338:5: error: use of undeclared identifier 'AppendElements'
    AppendElements(other);
    ^
In file included from /Users/ehsanakhgari/moz/mozilla-central/hal/sandbox/SandboxHal.cpp:1:
/Users/ehsanakhgari/moz/mozilla-central/hal/sandbox/SandboxHal.cpp:65:35: note: in instantiation of function template specialization 'AutoInfallibleTArray<unsigned
      int, 8>::AutoInfallibleTArray<nsTArrayDefaultAllocator>' requested here
  AutoInfallibleTArray<uint32, 8> p(pattern);
                                  ^
In file included from /Users/ehsanakhgari/moz/mozilla-central/hal/sandbox/SandboxHal.cpp:1:
In file included from /Users/ehsanakhgari/moz/mozilla-central/hal/sandbox/SandboxHal.cpp:41:
In file included from /Users/ehsanakhgari/moz/mozilla-central/hal/Hal.h:45:
../dist/include/nsTArray.h:824:14: note: must qualify identifier to find this declaration in dependent base class
  elem_type *AppendElements(const Item* array, size_type arrayLen) {
             ^
../dist/include/nsTArray.h:835:14: note: must qualify identifier to find this declaration in dependent base class
  elem_type *AppendElements(const nsTArray<Item, Allocator>& array) {
             ^
../dist/include/nsTArray.h:848:14: note: must qualify identifier to find this declaration in dependent base class
  elem_type *AppendElements(size_type count) {
             ^
2 warnings and 1 error generated.
Attached patch Patch (v1)Splinter Review
Assignee: nobody → ehsan
Status: NEW → ASSIGNED
Attachment #565535 - Flags: review?(jones.chris.g)
FWIW, this patch is also required to build with not-yet-released GCC 4.7, where you get something like:

In file included from /home/froydnj/src/mozilla-central/hal/Hal.h:45:0,
                 from /home/froydnj/src/mozilla-central/hal/sandbox/SandboxHal.cpp:40:
../dist/include/nsTArray.h: In instantiation of 'AutoInfallibleTArray<E, N>::AutoInfallibleTArray(const nsTArray<E, Allocator>&) [with Allocator = nsTArrayDefaultAllocator; E = unsigned int; unsigned int N = 8u]':
/home/froydnj/src/mozilla-central/hal/sandbox/SandboxHal.cpp:65:44:   required from here
../dist/include/nsTArray.h:1315:5: error: 'AppendElements' was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
../dist/include/nsTArray.h:1315:5: note: declarations in dependent base 'nsTArray<unsigned int, nsTArrayInfallibleAllocator>' are not found by unqualified lookup
../dist/include/nsTArray.h:1315:5: note: use 'this->AppendElements' instead

I can verify that this bug is fixed with the provided patch.
Comment on attachment 565535 [details] [diff] [review]
Patch (v1)

Nit: would you please add

> template<class E, PRUint32 N, class Alloc=nsTArrayDefaultAllocator>
> class nsAutoTArray : public nsAutoArrayBase<nsTArray<E, Alloc>, N>
> {

typedef nsAutoArrayBase<nsTArray<E, Alloc>, N> Base;

> public:
>   nsAutoTArray() {}
> 
>   template<typename Allocator>
>   nsAutoTArray(const nsTArray<E, Allocator>& other) {
>-    AppendElements(other);

and then call

>+    Base::AppendElements(other);

instead?  And below.

r=me with that.
Attachment #565535 - Flags: review?(jones.chris.g) → review+
https://hg.mozilla.org/mozilla-central/rev/500185b5808c
Status: ASSIGNED → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.