Aspell Clang++ Compilation Patch
Hypo Stases <[email protected]> Wed, 24 Feb 2016 07:26:38 +0200
| Newsgroups | gmane.comp.gnu.aspell.devel |
|---|---|
| Message-ID | <CAO0-R_+FsWRjZxyo=uZ+ozkevExN1LgfBWQgEopdsdrg+R0tcA@mail.gmail.com> |
--001a11401970700407052c7d4ff2
Content-Type: multipart/alternative; boundary=001a11401970700402052c7d4ff0
--001a11401970700402052c7d4ff0
Content-Type: text/plain; charset=UTF-8
Dear Kevin,
Compilation by recent clang++ on Mac (Apple LLVM version 7.0.2
(clang-700.1.81)) is broken.
It complain on 3 issues with templates like failing to void-reference
instantiation, and 2 issues in in visibility of resolving.
There's one more issue at the linking step.
The patch is attached and inlined.
Thank you so much for the great aspell!
Best.
Hypo
diff -Naru aspell-0.61/common/hash.hpp
aspell-0.61-mac-patched/common/hash.hpp
--- aspell-0.61/common/hash.hpp 2016-02-22 14:58:15.000000000 +0200
+++ aspell-0.61-mac-patched/common/hash.hpp 2016-02-22
17:02:55.000000000 +0200
@@ -324,7 +324,7 @@
: Base(s, Parms(h,e)) {}
data_type & operator[](const key_type & k)
{
- return (*((insert(value_type(k, data_type()))).first)).second;
+ return (*((this->insert(value_type(k, data_type()))).first)).second;
}
};
diff -Naru aspell-0.61/common/posib_err.hpp
aspell-0.61-mac-patched/common/posib_err.hpp
--- aspell-0.61/common/posib_err.hpp 2005-05-03 08:08:19.000000000 +0300
+++ aspell-0.61-mac-patched/common/posib_err.hpp 2016-02-22
17:02:42.000000000 +0200
@@ -158,6 +158,9 @@
void del();
};
+ template <typename Ret> class PosibErr;
+ template <> class PosibErr<void>;
+
template <typename Ret>
class PosibErr : public PosibErrBase
{
@@ -171,8 +174,8 @@
PosibErr(const PosibErr<T> & other)
: PosibErrBase(other), data(other.data) {}
- PosibErr(const PosibErr<void> & other)
- : PosibErrBase(other) {}
+ PosibErr(const PosibErr<void> & other);
+ //: PosibErrBase(other) {}
PosibErr& operator= (const PosibErr & other) {
data = other.data;
@@ -186,6 +189,7 @@
Ret data;
};
+
template <>
class PosibErr<void> : public PosibErrBase
{
@@ -196,6 +200,10 @@
PosibErr() {}
};
+ template <typename Ret>
+ PosibErr<Ret>::PosibErr(const PosibErr<void> & other) :
PosibErrBase(other) {}
+
+
//
//
//
diff -Naru aspell-0.61/common/vector.hpp
aspell-0.61-mac-patched/common/vector.hpp
--- aspell-0.61/common/vector.hpp 2006-11-24 16:36:50.000000000 +0200
+++ aspell-0.61-mac-patched/common/vector.hpp 2016-02-22
17:02:49.000000000 +0200
@@ -35,7 +35,7 @@
this->push_back(t);
}
void append(const T * begin, unsigned int size) {
- insert(this->end(), begin, begin+size);
+ this->insert(this->end(), begin, begin+size);
}
void append(const T * begin, const T * end) {
insert(this->end(), begin, end);
diff -Naru aspell-0.61/interfaces/cc/aspell.h
aspell-0.61-mac-patched/interfaces/cc/aspell.h
--- aspell-0.61/interfaces/cc/aspell.h 2016-02-22 14:56:26.000000000
+0200
+++ aspell-0.61-mac-patched/interfaces/cc/aspell.h 2016-02-22
17:03:18.000000000 +0200
@@ -237,7 +237,7 @@
/******************************** errors ********************************/
-
+#ifndef __cplusplus
extern const struct AspellErrorInfo * const aerror_other;
extern const struct AspellErrorInfo * const aerror_operation_not_supported;
extern const struct AspellErrorInfo * const aerror_cant_copy;
@@ -328,6 +328,7 @@
extern const struct AspellErrorInfo * const aerror_invalid_expression;
extern const struct AspellErrorInfo * const aerror_convert_filter;
extern const struct AspellErrorInfo * const aerror_invalid_table_entry;
+#endif
/****************************** check info ******************************/
--001a11401970700402052c7d4ff0
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div><div><div><div><div><div><div>Dear Kevin,<br>Compilat=
ion by recent clang++ on Mac (Apple LLVM version 7.0.2 (clang-700.1.81)) is=
broken.<br><br></div>It complain on 3 issues with templates like failing t=
o void-reference <br></div>instantiation, and 2 issues in in visibility of =
resolving. <br><br></div>There's one more issue at the linking step.<br=
><br></div>The patch is attached and inlined.<br><br></div>Thank you so muc=
h for the great aspell!<br><br></div>Best.<br><br></div>Hypo<br><br><br>dif=
f -Naru aspell-0.61/common/hash.hpp aspell-0.61-mac-patched/common/hash.hpp=
<br>--- aspell-0.61/common/hash.hpp=C2=A0=C2=A0=C2=A0 2016-02-22 14:58:15.0=
00000000 +0200<br>+++ aspell-0.61-mac-patched/common/hash.hpp=C2=A0=C2=A0=
=C2=A0 2016-02-22 17:02:55.000000000 +0200<br>@@ -324,7 +324,7 @@<br>=C2=A0=
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 : Base(s, Parms(h,e)) {}<br>=C2=A0=C2=A0=C2=
=A0=C2=A0 data_type & operator[](const key_type & k) <br>=C2=A0=C2=
=A0=C2=A0=C2=A0 {<br>-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return (*((insert(valu=
e_type(k, data_type()))).first)).second;<br>+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=
return (*((this->insert(value_type(k, data_type()))).first)).second;<br=
>=C2=A0=C2=A0=C2=A0=C2=A0 }<br>=C2=A0=C2=A0 };<br>=C2=A0<br>diff -Naru aspe=
ll-0.61/common/posib_err.hpp aspell-0.61-mac-patched/common/posib_err.hpp<b=
r>--- aspell-0.61/common/posib_err.hpp=C2=A0=C2=A0=C2=A0 2005-05-03 08:08:1=
9.000000000 +0300<br>+++ aspell-0.61-mac-patched/common/posib_err.hpp=C2=A0=
=C2=A0=C2=A0 2016-02-22 17:02:42.000000000 +0200<br>@@ -158,6 +158,9 @@<br>=
=C2=A0=C2=A0=C2=A0=C2=A0 void del();<br>=C2=A0=C2=A0 };<br>=C2=A0<br>+=C2=
=A0 template <typename Ret> class PosibErr;<br>+=C2=A0 template <&=
gt; class PosibErr<void>;<br>+<br>=C2=A0=C2=A0 template <typename =
Ret><br>=C2=A0=C2=A0 class PosibErr : public PosibErrBase<br>=C2=A0=C2=
=A0 {<br>@@ -171,8 +174,8 @@<br>=C2=A0=C2=A0=C2=A0=C2=A0 PosibErr(const Pos=
ibErr<T> & other)<br>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 : Posib=
ErrBase(other), data(other.data) {}<br>=C2=A0<br>-=C2=A0=C2=A0=C2=A0 PosibE=
rr(const PosibErr<void> & other)<br>-=C2=A0=C2=A0=C2=A0=C2=A0=C2=
=A0 : PosibErrBase(other) {}<br>+=C2=A0=C2=A0=C2=A0 PosibErr(const PosibErr=
<void> & other);<br>+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 //: PosibErrB=
ase(other) {}<br>=C2=A0<br>=C2=A0=C2=A0=C2=A0=C2=A0 PosibErr& operator=
=3D (const PosibErr & other) {<br>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 =
data =3D other.data;<br>@@ -186,6 +189,7 @@<br>=C2=A0=C2=A0=C2=A0=C2=A0 Ret=
data;<br>=C2=A0=C2=A0 };<br>=C2=A0<br>+<br>=C2=A0=C2=A0 template <><=
br>=C2=A0=C2=A0 class PosibErr<void> : public PosibErrBase<br>=C2=A0=
=C2=A0 {<br>@@ -196,6 +200,10 @@<br>=C2=A0=C2=A0=C2=A0=C2=A0 PosibErr() {}<=
br>=C2=A0=C2=A0 };<br>=C2=A0<br>+=C2=A0 template <typename Ret><br>+=
=C2=A0 PosibErr<Ret>::PosibErr(const PosibErr<void> & other=
) : PosibErrBase(other) {}<br>+<br>+<br>=C2=A0//<br>=C2=A0//<br>=C2=A0//<br=
>diff -Naru aspell-0.61/common/vector.hpp aspell-0.61-mac-patched/common/ve=
ctor.hpp<br>--- aspell-0.61/common/vector.hpp=C2=A0=C2=A0=C2=A0 2006-11-24 =
16:36:50.000000000 +0200<br>+++ aspell-0.61-mac-patched/common/vector.hpp=
=C2=A0=C2=A0=C2=A0 2016-02-22 17:02:49.000000000 +0200<br>@@ -35,7 +35,7 @@=
<br>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 this->push_back(t);<br>=C2=A0=
=C2=A0=C2=A0=C2=A0 }<br>=C2=A0=C2=A0=C2=A0=C2=A0 void append(const T * begi=
n, unsigned int size) {<br>-=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 insert(this->=
end(), begin, begin+size);<br>+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 this->inse=
rt(this->end(), begin, begin+size);<br>=C2=A0=C2=A0=C2=A0=C2=A0 }<br>=C2=
=A0=C2=A0=C2=A0=C2=A0 void append(const T * begin, const T * end) {<br>=C2=
=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 insert(this->end(), begin, end);<br>di=
ff -Naru aspell-0.61/interfaces/cc/aspell.h aspell-0.61-mac-patched/interfa=
ces/cc/aspell.h<br>--- aspell-0.61/interfaces/cc/aspell.h=C2=A0=C2=A0=C2=A0=
2016-02-22 14:56:26.000000000 +0200<br>+++ aspell-0.61-mac-patched/interfa=
ces/cc/aspell.h=C2=A0=C2=A0=C2=A0 2016-02-22 17:03:18.000000000 +0200<br>@@=
-237,7 +237,7 @@<br>=C2=A0<br>=C2=A0/******************************** erro=
rs ********************************/<br>=C2=A0<br>-<br>+#ifndef __cplusplus=
<br>=C2=A0extern const struct AspellErrorInfo * const aerror_other;<br>=C2=
=A0extern const struct AspellErrorInfo * const aerror_operation_not_support=
ed;<br>=C2=A0extern const struct AspellErrorInfo * const=C2=A0=C2=A0 aerror=
_cant_copy;<br>@@ -328,6 +328,7 @@<br>=C2=A0extern const struct AspellError=
Info * const=C2=A0=C2=A0 aerror_invalid_expression;<br>=C2=A0extern const s=
truct AspellErrorInfo * const aerror_convert_filter;<br>=C2=A0extern const =
struct AspellErrorInfo * const=C2=A0=C2=A0 aerror_invalid_table_entry;<br>+=
#endif<br>=C2=A0<br>=C2=A0<br>=C2=A0/****************************** check i=
nfo ******************************/<br><br></div>
--001a11401970700402052c7d4ff0--
--001a11401970700407052c7d4ff2
Content-Type: application/octet-stream; name="aspell-clang.patch"
Content-Disposition: attachment; filename="aspell-clang.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_il0ebr8s0
ZGlmZiAtTmFydSBhc3BlbGwtMC42MS9jb21tb24vaGFzaC5ocHAgYXNwZWxsLTAuNjEtbWFjLXBh
dGNoZWQvY29tbW9uL2hhc2guaHBwCi0tLSBhc3BlbGwtMC42MS9jb21tb24vaGFzaC5ocHAJMjAx
Ni0wMi0yMiAxNDo1ODoxNS4wMDAwMDAwMDAgKzAyMDAKKysrIGFzcGVsbC0wLjYxLW1hYy1wYXRj
aGVkL2NvbW1vbi9oYXNoLmhwcAkyMDE2LTAyLTIyIDE3OjAyOjU1LjAwMDAwMDAwMCArMDIwMApA
QCAtMzI0LDcgKzMyNCw3IEBACiAgICAgICA6IEJhc2UocywgUGFybXMoaCxlKSkge30KICAgICBk
YXRhX3R5cGUgJiBvcGVyYXRvcltdKGNvbnN0IGtleV90eXBlICYgaykgCiAgICAgewotICAgICAg
cmV0dXJuICgqKChpbnNlcnQodmFsdWVfdHlwZShrLCBkYXRhX3R5cGUoKSkpKS5maXJzdCkpLnNl
Y29uZDsKKyAgICAgIHJldHVybiAoKigodGhpcy0+aW5zZXJ0KHZhbHVlX3R5cGUoaywgZGF0YV90
eXBlKCkpKSkuZmlyc3QpKS5zZWNvbmQ7CiAgICAgfQogICB9OwogCmRpZmYgLU5hcnUgYXNwZWxs
LTAuNjEvY29tbW9uL3Bvc2liX2Vyci5ocHAgYXNwZWxsLTAuNjEtbWFjLXBhdGNoZWQvY29tbW9u
L3Bvc2liX2Vyci5ocHAKLS0tIGFzcGVsbC0wLjYxL2NvbW1vbi9wb3NpYl9lcnIuaHBwCTIwMDUt
MDUtMDMgMDg6MDg6MTkuMDAwMDAwMDAwICswMzAwCisrKyBhc3BlbGwtMC42MS1tYWMtcGF0Y2hl
ZC9jb21tb24vcG9zaWJfZXJyLmhwcAkyMDE2LTAyLTIyIDE3OjAyOjQyLjAwMDAwMDAwMCArMDIw
MApAQCAtMTU4LDYgKzE1OCw5IEBACiAgICAgdm9pZCBkZWwoKTsKICAgfTsKIAorICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgUmV0PiBjbGFzcyBQb3NpYkVycjsKKyAgdGVtcGxhdGUgPD4gY2xhc3MgUG9z
aWJFcnI8dm9pZD47CisKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFJldD4KICAgY2xhc3MgUG9zaWJF
cnIgOiBwdWJsaWMgUG9zaWJFcnJCYXNlCiAgIHsKQEAgLTE3MSw4ICsxNzQsOCBAQAogICAgIFBv
c2liRXJyKGNvbnN0IFBvc2liRXJyPFQ+ICYgb3RoZXIpCiAgICAgICA6IFBvc2liRXJyQmFzZShv
dGhlciksIGRhdGEob3RoZXIuZGF0YSkge30KIAotICAgIFBvc2liRXJyKGNvbnN0IFBvc2liRXJy
PHZvaWQ+ICYgb3RoZXIpCi0gICAgICA6IFBvc2liRXJyQmFzZShvdGhlcikge30KKyAgICBQb3Np
YkVycihjb25zdCBQb3NpYkVycjx2b2lkPiAmIG90aGVyKTsKKyAgICAgIC8vOiBQb3NpYkVyckJh
c2Uob3RoZXIpIHt9CiAKICAgICBQb3NpYkVyciYgb3BlcmF0b3I9IChjb25zdCBQb3NpYkVyciAm
IG90aGVyKSB7CiAgICAgICBkYXRhID0gb3RoZXIuZGF0YTsKQEAgLTE4Niw2ICsxODksNyBAQAog
ICAgIFJldCBkYXRhOwogICB9OwogCisKICAgdGVtcGxhdGUgPD4KICAgY2xhc3MgUG9zaWJFcnI8
dm9pZD4gOiBwdWJsaWMgUG9zaWJFcnJCYXNlCiAgIHsKQEAgLTE5Niw2ICsyMDAsMTAgQEAKICAg
ICBQb3NpYkVycigpIHt9CiAgIH07CiAKKyAgdGVtcGxhdGUgPHR5cGVuYW1lIFJldD4KKyAgUG9z
aWJFcnI8UmV0Pjo6UG9zaWJFcnIoY29uc3QgUG9zaWJFcnI8dm9pZD4gJiBvdGhlcikgOiBQb3Np
YkVyckJhc2Uob3RoZXIpIHt9CisKKwogLy8KIC8vCiAvLwpkaWZmIC1OYXJ1IGFzcGVsbC0wLjYx
L2NvbW1vbi92ZWN0b3IuaHBwIGFzcGVsbC0wLjYxLW1hYy1wYXRjaGVkL2NvbW1vbi92ZWN0b3Iu
aHBwCi0tLSBhc3BlbGwtMC42MS9jb21tb24vdmVjdG9yLmhwcAkyMDA2LTExLTI0IDE2OjM2OjUw
LjAwMDAwMDAwMCArMDIwMAorKysgYXNwZWxsLTAuNjEtbWFjLXBhdGNoZWQvY29tbW9uL3ZlY3Rv
ci5ocHAJMjAxNi0wMi0yMiAxNzowMjo0OS4wMDAwMDAwMDAgKzAyMDAKQEAgLTM1LDcgKzM1LDcg
QEAKICAgICAgIHRoaXMtPnB1c2hfYmFjayh0KTsKICAgICB9CiAgICAgdm9pZCBhcHBlbmQoY29u
c3QgVCAqIGJlZ2luLCB1bnNpZ25lZCBpbnQgc2l6ZSkgewotICAgICAgaW5zZXJ0KHRoaXMtPmVu
ZCgpLCBiZWdpbiwgYmVnaW4rc2l6ZSk7CisgICAgICB0aGlzLT5pbnNlcnQodGhpcy0+ZW5kKCks
IGJlZ2luLCBiZWdpbitzaXplKTsKICAgICB9CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgVCAqIGJl
Z2luLCBjb25zdCBUICogZW5kKSB7CiAgICAgICBpbnNlcnQodGhpcy0+ZW5kKCksIGJlZ2luLCBl
bmQpOwpkaWZmIC1OYXJ1IGFzcGVsbC0wLjYxL2ludGVyZmFjZXMvY2MvYXNwZWxsLmggYXNwZWxs
LTAuNjEtbWFjLXBhdGNoZWQvaW50ZXJmYWNlcy9jYy9hc3BlbGwuaAotLS0gYXNwZWxsLTAuNjEv
aW50ZXJmYWNlcy9jYy9hc3BlbGwuaAkyMDE2LTAyLTIyIDE0OjU2OjI2LjAwMDAwMDAwMCArMDIw
MAorKysgYXNwZWxsLTAuNjEtbWFjLXBhdGNoZWQvaW50ZXJmYWNlcy9jYy9hc3BlbGwuaAkyMDE2
LTAyLTIyIDE3OjAzOjE4LjAwMDAwMDAwMCArMDIwMApAQCAtMjM3LDcgKzIzNyw3IEBACiAKIC8q
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBlcnJvcnMgKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKiovCiAKLQorI2lmbmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuIGNvbnN0IHN0
cnVjdCBBc3BlbGxFcnJvckluZm8gKiBjb25zdCBhZXJyb3Jfb3RoZXI7CiBleHRlcm4gY29uc3Qg
c3RydWN0IEFzcGVsbEVycm9ySW5mbyAqIGNvbnN0IGFlcnJvcl9vcGVyYXRpb25fbm90X3N1cHBv
cnRlZDsKIGV4dGVybiBjb25zdCBzdHJ1Y3QgQXNwZWxsRXJyb3JJbmZvICogY29uc3QgICBhZXJy
b3JfY2FudF9jb3B5OwpAQCAtMzI4LDYgKzMyOCw3IEBACiBleHRlcm4gY29uc3Qgc3RydWN0IEFz
cGVsbEVycm9ySW5mbyAqIGNvbnN0ICAgYWVycm9yX2ludmFsaWRfZXhwcmVzc2lvbjsKIGV4dGVy
biBjb25zdCBzdHJ1Y3QgQXNwZWxsRXJyb3JJbmZvICogY29uc3QgYWVycm9yX2NvbnZlcnRfZmls
dGVyOwogZXh0ZXJuIGNvbnN0IHN0cnVjdCBBc3BlbGxFcnJvckluZm8gKiBjb25zdCAgIGFlcnJv
cl9pbnZhbGlkX3RhYmxlX2VudHJ5OworI2VuZGlmCiAKIAogLyoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKiBjaGVjayBpbmZvICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K
--001a11401970700407052c7d4ff2
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
Aspell-devel mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/aspell-devel
--001a11401970700407052c7d4ff2--