external/icu/UnpackedTarball_icu.mk               |    1 
 external/icu/Wunnecessary-virtual-specifier.patch |  833 ++++++++++++++++++++++
 2 files changed, 834 insertions(+)

New commits:
commit 2129691310f24a333d2a97e79f99a64e1b19a426
Author:     Stephan Bergmann <stephan.bergm...@allotropia.de>
AuthorDate: Mon May 12 15:53:57 2025 +0200
Commit:     Stephan Bergmann <stephan.bergm...@allotropia.de>
CommitDate: Tue May 13 08:15:35 2025 +0200

    external/icu: New Clang 21 trunk -Werror,-Wunnecessary-virtual-specifier
    
    > [CXX] svl/source/misc/PasswordHelper.cxx
    > In file included from svl/source/misc/PasswordHelper.cxx:25:
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:148:28: error: 
virtual method 'clone' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >   148 |     virtual RegexPattern  *clone() const;
    >       |                            ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:328:22: error: 
virtual method 'flags' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >   328 |     virtual uint32_t flags() const;
    >       |                      ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:347:27: error: 
virtual method 'matcher' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >   347 |     virtual RegexMatcher *matcher(const UnicodeString &input,
    >       |                           ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:379:27: error: 
virtual method 'matcher' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >   379 |     virtual RegexMatcher *matcher(UErrorCode  &status) const;
    >       |                           ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:428:27: error: 
virtual method 'pattern' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >   428 |     virtual UnicodeString pattern() const;
    >       |                           ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:441:20: error: 
virtual method 'patternText' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >   441 |     virtual UText *patternText(UErrorCode      &status) const;
    >       |                    ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:457:21: error: 
virtual method 'groupNumberFromName' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >   457 |     virtual int32_t groupNumberFromName(const UnicodeString 
&groupName, UErrorCode &status) const;
    >       |                     ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:476:21: error: 
virtual method 'groupNumberFromName' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >   476 |     virtual int32_t groupNumberFromName(const char *groupName, 
int32_t nameLength, UErrorCode &status) const;
    >       |                     ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:517:22: error: 
virtual method 'split' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >   517 |     virtual int32_t  split(const UnicodeString &input,
    >       |                      ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:561:22: error: 
virtual method 'split' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >   561 |     virtual int32_t  split(UText *input,
    >       |                      ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:770:19: error: 
virtual method 'matches' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >   770 |     virtual UBool matches(UErrorCode &status);
    >       |                   ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:783:19: error: 
virtual method 'matches' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >   783 |     virtual UBool matches(int64_t startIndex, UErrorCode &status);
    >       |                   ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:799:19: error: 
virtual method 'lookingAt' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >   799 |     virtual UBool lookingAt(UErrorCode &status);
    >       |                   ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:815:19: error: 
virtual method 'lookingAt' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >   815 |     virtual UBool lookingAt(int64_t startIndex, UErrorCode 
&status);
    >       |                   ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:830:19: error: 
virtual method 'find' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >   830 |     virtual UBool find();
    >       |                   ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:847:19: error: 
virtual method 'find' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >   847 |     virtual UBool find(UErrorCode &status);
    >       |                   ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:858:19: error: 
virtual method 'find' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >   858 |     virtual UBool find(int64_t start, UErrorCode &status);
    >       |                   ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:870:27: error: 
virtual method 'group' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >   870 |     virtual UnicodeString group(UErrorCode &status) const;
    >       |                           ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:890:27: error: 
virtual method 'group' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >   890 |     virtual UnicodeString group(int32_t groupNum, UErrorCode 
&status) const;
    >       |                           ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:897:21: error: 
virtual method 'groupCount' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >   897 |     virtual int32_t groupCount() const;
    >       |                     ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:914:20: error: 
virtual method 'group' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >   914 |     virtual UText *group(UText *dest, int64_t &group_len, 
UErrorCode &status) const;
    >       |                    ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:936:20: error: 
virtual method 'group' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >   936 |     virtual UText *group(int32_t groupNum, UText *dest, int64_t 
&group_len, UErrorCode &status) const;
    >       |                    ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:945:21: error: 
virtual method 'start' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >   945 |     virtual int32_t start(UErrorCode &status) const;
    >       |                     ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:954:21: error: 
virtual method 'start64' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >   954 |     virtual int64_t start64(UErrorCode &status) const;
    >       |                     ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:970:21: error: 
virtual method 'start' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >   970 |     virtual int32_t start(int32_t group, UErrorCode &status) 
const;
    >       |                     ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:985:21: error: 
virtual method 'start64' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >   985 |     virtual int64_t start64(int32_t group, UErrorCode &status) 
const;
    >       |                     ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1000:21: error: 
virtual method 'end' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >  1000 |     virtual int32_t end(UErrorCode &status) const;
    >       |                     ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1015:21: error: 
virtual method 'end64' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >  1015 |     virtual int64_t end64(UErrorCode &status) const;
    >       |                     ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1035:21: error: 
virtual method 'end' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >  1035 |     virtual int32_t end(int32_t group, UErrorCode &status) const;
    >       |                     ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1054:21: error: 
virtual method 'end64' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >  1054 |     virtual int64_t end64(int32_t group, UErrorCode &status) 
const;
    >       |                     ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1064:27: error: 
virtual method 'reset' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >  1064 |     virtual RegexMatcher &reset();
    >       |                           ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1082:27: error: 
virtual method 'reset' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >  1082 |     virtual RegexMatcher &reset(int64_t index, UErrorCode 
&status);
    >       |                           ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1102:27: error: 
virtual method 'reset' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >  1102 |     virtual RegexMatcher &reset(const UnicodeString &input);
    >       |                           ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1118:27: error: 
virtual method 'reset' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >  1118 |     virtual RegexMatcher &reset(UText *input);
    >       |                           ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1145:27: error: 
virtual method 'refreshInputText' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1145 |     virtual RegexMatcher &refreshInputText(UText *input, 
UErrorCode &status);
    >       |                           ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1170:34: error: 
virtual method 'input' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >  1170 |     virtual const UnicodeString &input() const;
    >       |                                  ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1180:20: error: 
virtual method 'inputText' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1180 |     virtual UText *inputText() const;
    >       |                    ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1192:20: error: 
virtual method 'getInput' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >  1192 |     virtual UText *getInput(UText *dest, UErrorCode &status) 
const;
    >       |                    ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1213:28: error: 
virtual method 'region' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >  1213 |      virtual RegexMatcher &region(int64_t start, int64_t limit, 
UErrorCode &status);
    >       |                            ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1226:28: error: 
virtual method 'region' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >  1226 |      virtual RegexMatcher &region(int64_t regionStart, int64_t 
regionLimit, int64_t startIndex, UErrorCode &status);
    >       |                            ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1236:22: error: 
virtual method 'regionStart' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1236 |      virtual int32_t regionStart() const;
    >       |                      ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1246:22: error: 
virtual method 'regionStart64' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1246 |      virtual int64_t regionStart64() const;
    >       |                      ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1257:23: error: 
virtual method 'regionEnd' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1257 |       virtual int32_t regionEnd() const;
    >       |                       ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1267:23: error: 
virtual method 'regionEnd64' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1267 |       virtual int64_t regionEnd64() const;
    >       |                       ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1277:21: error: 
virtual method 'hasTransparentBounds' is inside a 'final' class and can never 
be overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1277 |       virtual UBool hasTransparentBounds() const;
    >       |                     ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1297:29: error: 
virtual method 'useTransparentBounds' is inside a 'final' class and can never 
be overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1297 |       virtual RegexMatcher &useTransparentBounds(UBool b);
    >       |                             ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1307:21: error: 
virtual method 'hasAnchoringBounds' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1307 |       virtual UBool hasAnchoringBounds() const;
    >       |                     ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1322:29: error: 
virtual method 'useAnchoringBounds' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1322 |       virtual RegexMatcher &useAnchoringBounds(UBool b);
    >       |                             ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1337:21: error: 
virtual method 'hitEnd' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >  1337 |       virtual UBool hitEnd() const;
    >       |                     ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1348:21: error: 
virtual method 'requireEnd' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1348 |       virtual UBool requireEnd() const;
    >       |                     ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1356:33: error: 
virtual method 'pattern' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >  1356 |     virtual const RegexPattern &pattern() const;
    >       |                                 ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1375:27: error: 
virtual method 'replaceAll' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1375 |     virtual UnicodeString replaceAll(const UnicodeString 
&replacement, UErrorCode &status);
    >       |                           ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1398:20: error: 
virtual method 'replaceAll' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1398 |     virtual UText *replaceAll(UText *replacement, UText *dest, 
UErrorCode &status);
    >       |                    ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1421:27: error: 
virtual method 'replaceFirst' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1421 |     virtual UnicodeString replaceFirst(const UnicodeString 
&replacement, UErrorCode &status);
    >       |                           ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1448:20: error: 
virtual method 'replaceFirst' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1448 |     virtual UText *replaceFirst(UText *replacement, UText *dest, 
UErrorCode &status);
    >       |                    ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1478:27: error: 
virtual method 'appendReplacement' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1478 |     virtual RegexMatcher &appendReplacement(UnicodeString &dest,
    >       |                           ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1509:27: error: 
virtual method 'appendReplacement' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1509 |     virtual RegexMatcher &appendReplacement(UText *dest,
    >       |                           ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1523:28: error: 
virtual method 'appendTail' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1523 |     virtual UnicodeString &appendTail(UnicodeString &dest);
    >       |                            ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1539:20: error: 
virtual method 'appendTail' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1539 |     virtual UText *appendTail(UText *dest, UErrorCode &status);
    >       |                    ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1565:22: error: 
virtual method 'split' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >  1565 |     virtual int32_t  split(const UnicodeString &input,
    >       |                      ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1594:22: error: 
virtual method 'split' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >  1594 |     virtual int32_t  split(UText *input,
    >       |                      ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1620:18: error: 
virtual method 'setTimeLimit' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1620 |     virtual void setTimeLimit(int32_t limit, UErrorCode &status);
    >       |                  ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1628:21: error: 
virtual method 'getTimeLimit' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1628 |     virtual int32_t getTimeLimit() const;
    >       |                     ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1651:18: error: 
virtual method 'setStackLimit' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1651 |     virtual void setStackLimit(int32_t  limit, UErrorCode 
&status);
    >       |                  ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1660:22: error: 
virtual method 'getStackLimit' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1660 |     virtual int32_t  getStackLimit() const;
    >       |                      ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1676:18: error: 
virtual method 'setMatchCallback' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1676 |     virtual void setMatchCallback(URegexMatchCallback     
*callback,
    >       |                  ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1691:18: error: 
virtual method 'getMatchCallback' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1691 |     virtual void getMatchCallback(URegexMatchCallback     
*&callback,
    >       |                  ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1709:18: error: 
virtual method 'setFindProgressCallback' is inside a 'final' class and can 
never be overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1709 |     virtual void 
setFindProgressCallback(URegexFindProgressCallback      *callback,
    >       |                  ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/regex.h:1724:18: error: 
virtual method 'getFindProgressCallback' is inside a 'final' class and can 
never be overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1724 |     virtual void 
getFindProgressCallback(URegexFindProgressCallback      *&callback,
    >       |                  ^
    
    and
    
    > [CXX] i18npool/source/collator/collator_unicode.cxx
    > In file included from i18npool/source/collator/collator_unicode.cxx:29:
    > In file included from i18npool/inc/collator_unicode.hxx:26:
    > In file included from 
workdir/UnpackedTarball/icu/source/i18n/unicode/tblcoll.h:71:
    > In file included from 
workdir/UnpackedTarball/icu/source/i18n/unicode/coll.h:70:
    > workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:498:18: error: 
virtual method 'operator==' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >   498 |     virtual bool operator==(const UnicodeSet& o) const;
    >       |                  ^
    > workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:525:21: error: 
virtual method 'hashCode' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >   525 |     virtual int32_t hashCode() const;
    >       |                     ^
    > workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:795:21: error: 
virtual method 'size' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >   795 |     virtual int32_t size() const;
    >       |                     ^
    > workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:803:19: error: 
virtual method 'isEmpty' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >   803 |     virtual UBool isEmpty() const;
    >       |                   ^
    > workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:828:19: error: 
virtual method 'contains' is inside a 'final' class and can never be overridden 
[-Werror,-Wunnecessary-virtual-specifier]
    >   828 |     virtual UBool contains(UChar32 start, UChar32 end) const;
    >       |                   ^
    > workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:846:19: error: 
virtual method 'containsAll' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >   846 |     virtual UBool containsAll(const UnicodeSet& c) const;
    >       |                   ^
    > workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:1234:25: 
error: virtual method 'add' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1234 |     virtual UnicodeSet& add(UChar32 start, UChar32 end);
    >       |                         ^
    > workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:1340:25: 
error: virtual method 'retain' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1340 |     virtual UnicodeSet& retain(UChar32 start, UChar32 end);
    >       |                         ^
    > workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:1378:25: 
error: virtual method 'remove' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1378 |     virtual UnicodeSet& remove(UChar32 start, UChar32 end);
    >       |                         ^
    > workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:1415:25: 
error: virtual method 'complement' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1415 |     virtual UnicodeSet& complement();
    >       |                         ^
    > workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:1429:25: 
error: virtual method 'complement' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1429 |     virtual UnicodeSet& complement(UChar32 start, UChar32 end);
    >       |                         ^
    > workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:1466:25: 
error: virtual method 'addAll' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1466 |     virtual UnicodeSet& addAll(const UnicodeSet& c);
    >       |                         ^
    > workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:1479:25: 
error: virtual method 'retainAll' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1479 |     virtual UnicodeSet& retainAll(const UnicodeSet& c);
    >       |                         ^
    > workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:1492:25: 
error: virtual method 'removeAll' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1492 |     virtual UnicodeSet& removeAll(const UnicodeSet& c);
    >       |                         ^
    > workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:1504:25: 
error: virtual method 'complementAll' is inside a 'final' class and can never 
be overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1504 |     virtual UnicodeSet& complementAll(const UnicodeSet& c);
    >       |                         ^
    > workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:1512:25: 
error: virtual method 'clear' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1512 |     virtual UnicodeSet& clear();
    >       |                         ^
    > workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:1549:25: 
error: virtual method 'removeAllStrings' is inside a 'final' class and can 
never be overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1549 |     virtual UnicodeSet &removeAllStrings();
    >       |                         ^
    > workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:1558:21: 
error: virtual method 'getRangeCount' is inside a 'final' class and can never 
be overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1558 |     virtual int32_t getRangeCount() const;
    >       |                     ^
    > workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:1567:21: 
error: virtual method 'getRangeStart' is inside a 'final' class and can never 
be overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1567 |     virtual UChar32 getRangeStart(int32_t index) const;
    >       |                     ^
    > workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:1576:21: 
error: virtual method 'getRangeEnd' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1576 |     virtual UChar32 getRangeEnd(int32_t index) const;
    >       |                     ^
    > workdir/UnpackedTarball/icu/source/common/unicode/uniset.h:1634:25: 
error: virtual method 'compact' is inside a 'final' class and can never be 
overridden [-Werror,-Wunnecessary-virtual-specifier]
    >  1634 |     virtual UnicodeSet& compact();
    >       |                         ^
    > In file included from i18npool/source/collator/collator_unicode.cxx:29:
    > In file included from i18npool/inc/collator_unicode.hxx:26:
    > workdir/UnpackedTarball/icu/source/i18n/unicode/tblcoll.h:245:39: error: 
virtual method 'createCollationElementIterator' is inside a 'final' class and 
can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
    >   245 |     virtual CollationElementIterator* 
createCollationElementIterator(
    >       |                                       ^
    > workdir/UnpackedTarball/icu/source/i18n/unicode/tblcoll.h:257:39: error: 
virtual method 'createCollationElementIterator' is inside a 'final' class and 
can never be overridden [-Werror,-Wunnecessary-virtual-specifier]
    >   257 |     virtual CollationElementIterator* 
createCollationElementIterator(
    >       |                                       ^
    
    etc.
    
    Change-Id: Id2e6c2ac7b10a625b9698644c310a32b0f4b4aa2
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185220
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <stephan.bergm...@allotropia.de>

diff --git a/external/icu/UnpackedTarball_icu.mk 
b/external/icu/UnpackedTarball_icu.mk
index 92777dd331cb..b3bd35e605e8 100644
--- a/external/icu/UnpackedTarball_icu.mk
+++ b/external/icu/UnpackedTarball_icu.mk
@@ -40,6 +40,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,icu,\
        external/icu/icu4c-$(if $(filter ANDROID,$(OS)),android,rpath).patch.1 \
        $(if $(filter-out 
ANDROID,$(OS)),external/icu/icu4c-icudata-stdlibs.patch.1) \
        external/icu/no-python.patch \
+       external/icu/Wunnecessary-virtual-specifier.patch \
 ))
 
 $(eval $(call 
gb_UnpackedTarball_add_file,icu,source/data/brkitr/khmerdict.dict,external/icu/khmerdict.dict))
diff --git a/external/icu/Wunnecessary-virtual-specifier.patch 
b/external/icu/Wunnecessary-virtual-specifier.patch
new file mode 100644
index 000000000000..9ba9c9ad317f
--- /dev/null
+++ b/external/icu/Wunnecessary-virtual-specifier.patch
@@ -0,0 +1,833 @@
+--- source/common/unicode/uniset.h
++++ source/common/unicode/uniset.h
+@@ -495,7 +495,7 @@
+      * @return <tt>true</tt> if the specified set is equal to this set.
+      * @stable ICU 2.0
+      */
+-    virtual bool operator==(const UnicodeSet& o) const;
++    bool operator==(const UnicodeSet& o) const;
+ 
+     /**
+      * Compares the specified object with this set for equality.  Returns
+@@ -522,7 +522,7 @@
+      * @see Object#hashCode()
+      * @stable ICU 2.0
+      */
+-    virtual int32_t hashCode() const;
++    int32_t hashCode() const;
+ 
+     /**
+      * Get a UnicodeSet pointer from a USet
+@@ -792,7 +792,7 @@
+      * @stable ICU 2.0
+      * @see getRangeCount
+      */
+-    virtual int32_t size() const;
++    int32_t size() const;
+ 
+     /**
+      * Returns <tt>true</tt> if this set contains no elements.
+@@ -800,7 +800,7 @@
+      * @return <tt>true</tt> if this set contains no elements.
+      * @stable ICU 2.0
+      */
+-    virtual UBool isEmpty() const;
++    UBool isEmpty() const;
+ 
+     /**
+      * @return true if this set contains multi-character strings or the empty 
string.
+@@ -825,7 +825,7 @@
+      * @return true if the test condition is met
+      * @stable ICU 2.0
+      */
+-    virtual UBool contains(UChar32 start, UChar32 end) const;
++    UBool contains(UChar32 start, UChar32 end) const;
+ 
+     /**
+      * Returns <tt>true</tt> if this set contains the given
+@@ -843,7 +843,7 @@
+      * @return true if the test condition is met
+      * @stable ICU 2.4
+      */
+-    virtual UBool containsAll(const UnicodeSet& c) const;
++    UBool containsAll(const UnicodeSet& c) const;
+ 
+     /**
+      * Returns true if this set contains all the characters
+@@ -1231,7 +1231,7 @@
+      * to this set.
+      * @stable ICU 2.0
+      */
+-    virtual UnicodeSet& add(UChar32 start, UChar32 end);
++    UnicodeSet& add(UChar32 start, UChar32 end);
+ 
+     /**
+      * Adds the specified character to this set if it is not already
+@@ -1337,7 +1337,7 @@
+      * @param end last character, inclusive, of range
+      * @stable ICU 2.0
+      */
+-    virtual UnicodeSet& retain(UChar32 start, UChar32 end);
++    UnicodeSet& retain(UChar32 start, UChar32 end);
+ 
+ 
+     /**
+@@ -1375,7 +1375,7 @@
+      * from this set.
+      * @stable ICU 2.0
+      */
+-    virtual UnicodeSet& remove(UChar32 start, UChar32 end);
++    UnicodeSet& remove(UChar32 start, UChar32 end);
+ 
+     /**
+      * Removes the specified character from this set if it is present.
+@@ -1412,7 +1412,7 @@
+      * A frozen set will not be modified.
+      * @stable ICU 2.0
+      */
+-    virtual UnicodeSet& complement();
++    UnicodeSet& complement();
+ 
+     /**
+      * Complements the specified range in this set.  Any character in
+@@ -1426,7 +1426,7 @@
+      * @param end last character, inclusive, of range
+      * @stable ICU 2.0
+      */
+-    virtual UnicodeSet& complement(UChar32 start, UChar32 end);
++    UnicodeSet& complement(UChar32 start, UChar32 end);
+ 
+     /**
+      * Complements the specified character in this set.  The character
+@@ -1463,7 +1463,7 @@
+      * @see #add(UChar32, UChar32)
+      * @stable ICU 2.0
+      */
+-    virtual UnicodeSet& addAll(const UnicodeSet& c);
++    UnicodeSet& addAll(const UnicodeSet& c);
+ 
+     /**
+      * Retains only the elements in this set that are contained in the
+@@ -1476,7 +1476,7 @@
+      * @param c set that defines which elements this set will retain.
+      * @stable ICU 2.0
+      */
+-    virtual UnicodeSet& retainAll(const UnicodeSet& c);
++    UnicodeSet& retainAll(const UnicodeSet& c);
+ 
+     /**
+      * Removes from this set all of its elements that are contained in the
+@@ -1489,7 +1489,7 @@
+      *          this set.
+      * @stable ICU 2.0
+      */
+-    virtual UnicodeSet& removeAll(const UnicodeSet& c);
++    UnicodeSet& removeAll(const UnicodeSet& c);
+ 
+     /**
+      * Complements in this set all elements contained in the specified
+@@ -1501,7 +1501,7 @@
+      *          this set.
+      * @stable ICU 2.4
+      */
+-    virtual UnicodeSet& complementAll(const UnicodeSet& c);
++    UnicodeSet& complementAll(const UnicodeSet& c);
+ 
+     /**
+      * Removes all of the elements from this set.  This set will be
+@@ -1509,7 +1509,7 @@
+      * A frozen set will not be modified.
+      * @stable ICU 2.0
+      */
+-    virtual UnicodeSet& clear();
++    UnicodeSet& clear();
+ 
+     /**
+      * Close this set over the given attribute.  For the attribute
+@@ -1546,7 +1546,7 @@
+      * @return a reference to this set.
+      * @stable ICU 4.2
+      */
+-    virtual UnicodeSet &removeAllStrings();
++    UnicodeSet &removeAllStrings();
+ 
+     /**
+      * Iteration method that returns the number of ranges contained in
+@@ -1555,7 +1555,7 @@
+      * @see #getRangeEnd
+      * @stable ICU 2.4
+      */
+-    virtual int32_t getRangeCount() const;
++    int32_t getRangeCount() const;
+ 
+     /**
+      * Iteration method that returns the first character in the
+@@ -1564,7 +1564,7 @@
+      * @see #getRangeEnd
+      * @stable ICU 2.4
+      */
+-    virtual UChar32 getRangeStart(int32_t index) const;
++    UChar32 getRangeStart(int32_t index) const;
+ 
+     /**
+      * Iteration method that returns the last character in the
+@@ -1573,7 +1573,7 @@
+      * @see #getRangeEnd
+      * @stable ICU 2.4
+      */
+-    virtual UChar32 getRangeEnd(int32_t index) const;
++    UChar32 getRangeEnd(int32_t index) const;
+ 
+     /**
+      * Serializes this set into an array of 16-bit integers.  Serialization
+@@ -1631,7 +1631,7 @@
+      * A frozen set will not be modified.
+      * @stable ICU 2.4
+      */
+-    virtual UnicodeSet& compact();
++    UnicodeSet& compact();
+ 
+     /**
+      * Return the class ID for this class.  This is useful only for
+--- source/i18n/unicode/regex.h
++++ source/i18n/unicode/regex.h
+@@ -145,7 +145,7 @@
+      * @return the copy of this RegexPattern
+      * @stable ICU 2.4
+      */
+-    virtual RegexPattern  *clone() const;
++    RegexPattern  *clone() const;
+ 
+ 
+    /**
+@@ -325,7 +325,7 @@
+     * @return  the #URegexpFlag match mode flags
+     * @stable ICU 2.4
+     */
+-    virtual uint32_t flags() const;
++    uint32_t flags() const;
+ 
+    /**
+     * Creates a RegexMatcher that will match the given input against this 
pattern.  The
+@@ -344,7 +344,7 @@
+     *
+     * @stable ICU 2.4
+     */
+-    virtual RegexMatcher *matcher(const UnicodeString &input,
++    RegexMatcher *matcher(const UnicodeString &input,
+         UErrorCode          &status) const;
+         
+ private:
+@@ -376,7 +376,7 @@
+     *
+     * @stable ICU 2.6
+     */
+-    virtual RegexMatcher *matcher(UErrorCode  &status) const;
++    RegexMatcher *matcher(UErrorCode  &status) const;
+ 
+ 
+    /**
+@@ -425,7 +425,7 @@
+     * the returned string may no longer reflect the RegexPattern object.
+     * @stable ICU 2.4
+     */
+-    virtual UnicodeString pattern() const;
++    UnicodeString pattern() const;
+     
+     
+    /**
+@@ -438,7 +438,7 @@
+     *
+     * @stable ICU 4.6
+     */
+-    virtual UText *patternText(UErrorCode      &status) const;
++    UText *patternText(UErrorCode      &status) const;
+ 
+ 
+     /**
+@@ -454,7 +454,7 @@
+      *
+      * @stable ICU 55
+      */
+-    virtual int32_t groupNumberFromName(const UnicodeString &groupName, 
UErrorCode &status) const;
++    int32_t groupNumberFromName(const UnicodeString &groupName, UErrorCode 
&status) const;
+ 
+ 
+     /**
+@@ -473,7 +473,7 @@
+      *
+      * @stable ICU 55
+      */
+-    virtual int32_t groupNumberFromName(const char *groupName, int32_t 
nameLength, UErrorCode &status) const;
++    int32_t groupNumberFromName(const char *groupName, int32_t nameLength, 
UErrorCode &status) const;
+ 
+ 
+     /**
+@@ -514,7 +514,7 @@
+      * @return        The number of fields into which the input string was 
split.
+      * @stable ICU 2.4
+      */
+-    virtual int32_t  split(const UnicodeString &input,
++    int32_t  split(const UnicodeString &input,
+         UnicodeString    dest[],
+         int32_t          destCapacity,
+         UErrorCode       &status) const;
+@@ -558,7 +558,7 @@
+      *
+      * @stable ICU 4.6
+      */
+-    virtual int32_t  split(UText *input,
++    int32_t  split(UText *input,
+         UText            *dest[],
+         int32_t          destCapacity,
+         UErrorCode       &status) const;
+@@ -767,7 +767,7 @@
+     *    @return true if there is a match
+     *    @stable ICU 2.4
+     */
+-    virtual UBool matches(UErrorCode &status);
++    UBool matches(UErrorCode &status);
+ 
+ 
+    /**
+@@ -780,7 +780,7 @@
+     *    @return true if there is a match
+     *    @stable ICU 2.8
+     */
+-    virtual UBool matches(int64_t startIndex, UErrorCode &status);
++    UBool matches(int64_t startIndex, UErrorCode &status);
+ 
+ 
+    /**
+@@ -796,7 +796,7 @@
+     *    @return  true if there is a match at the start of the input string.
+     *    @stable ICU 2.4
+     */
+-    virtual UBool lookingAt(UErrorCode &status);
++    UBool lookingAt(UErrorCode &status);
+ 
+ 
+   /**
+@@ -812,7 +812,7 @@
+     *    @return  true if there is a match.
+     *    @stable ICU 2.8
+     */
+-    virtual UBool lookingAt(int64_t startIndex, UErrorCode &status);
++    UBool lookingAt(int64_t startIndex, UErrorCode &status);
+ 
+ 
+    /**
+@@ -827,7 +827,7 @@
+     *  @return  true if a match is found.
+     *  @stable ICU 2.4
+     */
+-    virtual UBool find();
++    UBool find();
+ 
+ 
+    /**
+@@ -844,7 +844,7 @@
+     *  @return  true if a match is found.
+     * @stable ICU 55
+     */
+-    virtual UBool find(UErrorCode &status);
++    UBool find(UErrorCode &status);
+ 
+    /**
+     *   Resets this RegexMatcher and then attempts to find the next substring 
of the
+@@ -855,7 +855,7 @@
+     *   @return  true if a match is found.
+     *   @stable ICU 2.4
+     */
+-    virtual UBool find(int64_t start, UErrorCode &status);
++    UBool find(int64_t start, UErrorCode &status);
+ 
+ 
+    /**
+@@ -867,7 +867,7 @@
+     *   @return  a string containing the matched input text.
+     *   @stable ICU 2.4
+     */
+-    virtual UnicodeString group(UErrorCode &status) const;
++    UnicodeString group(UErrorCode &status) const;
+ 
+ 
+    /**
+@@ -887,14 +887,14 @@
+     *    @return the captured text
+     *    @stable ICU 2.4
+     */
+-    virtual UnicodeString group(int32_t groupNum, UErrorCode &status) const;
++    UnicodeString group(int32_t groupNum, UErrorCode &status) const;
+ 
+    /**
+     *   Returns the number of capturing groups in this matcher's pattern.
+     *   @return the number of capture groups
+     *   @stable ICU 2.4
+     */
+-    virtual int32_t groupCount() const;
++    int32_t groupCount() const;
+ 
+ 
+    /**
+@@ -911,7 +911,7 @@
+     *
+     *   @stable ICU 4.6
+     */
+-    virtual UText *group(UText *dest, int64_t &group_len, UErrorCode &status) 
const; 
++    UText *group(UText *dest, int64_t &group_len, UErrorCode &status) const; 
+ 
+    /**
+     *   Returns a shallow clone of the entire live input string with the 
UText current native index
+@@ -933,7 +933,7 @@
+     *
+     *   @stable ICU 4.6
+     */
+-    virtual UText *group(int32_t groupNum, UText *dest, int64_t &group_len, 
UErrorCode &status) const;
++    UText *group(int32_t groupNum, UText *dest, int64_t &group_len, 
UErrorCode &status) const;
+ 
+    /**
+     *   Returns the index in the input string of the start of the text matched
+@@ -942,7 +942,7 @@
+     *    @return              The (native) position in the input string of 
the start of the last match.
+     *    @stable ICU 2.4
+     */
+-    virtual int32_t start(UErrorCode &status) const;
++    int32_t start(UErrorCode &status) const;
+ 
+    /**
+     *   Returns the index in the input string of the start of the text matched
+@@ -951,7 +951,7 @@
+     *    @return              The (native) position in the input string of 
the start of the last match.
+     *   @stable ICU 4.6
+     */
+-    virtual int64_t start64(UErrorCode &status) const;
++    int64_t start64(UErrorCode &status) const;
+ 
+ 
+    /**
+@@ -967,7 +967,7 @@
+     *    @return the (native) start position of substring matched by the 
specified group.
+     *    @stable ICU 2.4
+     */
+-    virtual int32_t start(int32_t group, UErrorCode &status) const;
++    int32_t start(int32_t group, UErrorCode &status) const;
+ 
+    /**
+     *   Returns the index in the input string of the start of the text 
matched by the
+@@ -982,7 +982,7 @@
+     *    @return the (native) start position of substring matched by the 
specified group.
+     *    @stable ICU 4.6
+     */
+-    virtual int64_t start64(int32_t group, UErrorCode &status) const;
++    int64_t start64(int32_t group, UErrorCode &status) const;
+ 
+    /**
+     *    Returns the index in the input string of the first character 
following the
+@@ -997,7 +997,7 @@
+     *                        a byte index for UTF-8.
+     *   @stable ICU 2.4
+     */
+-    virtual int32_t end(UErrorCode &status) const;
++    int32_t end(UErrorCode &status) const;
+ 
+    /**
+     *    Returns the index in the input string of the first character 
following the
+@@ -1012,7 +1012,7 @@
+     *                        a byte index for UTF-8.
+     *   @stable ICU 4.6
+     */
+-    virtual int64_t end64(UErrorCode &status) const;
++    int64_t end64(UErrorCode &status) const;
+ 
+ 
+    /**
+@@ -1032,7 +1032,7 @@
+     *              a byte index for UTF8.
+     *    @stable ICU 2.4
+     */
+-    virtual int32_t end(int32_t group, UErrorCode &status) const;
++    int32_t end(int32_t group, UErrorCode &status) const;
+ 
+    /**
+     *    Returns the index in the input string of the character following the
+@@ -1051,7 +1051,7 @@
+     *              a byte index for UTF8.
+     *   @stable ICU 4.6
+     */
+-    virtual int64_t end64(int32_t group, UErrorCode &status) const;
++    int64_t end64(int32_t group, UErrorCode &status) const;
+ 
+    /**
+     *   Resets this matcher.  The effect is to remove any memory of previous 
matches,
+@@ -1061,7 +1061,7 @@
+     *   @return this RegexMatcher.
+     *   @stable ICU 2.4
+     */
+-    virtual RegexMatcher &reset();
++    RegexMatcher &reset();
+ 
+ 
+    /**
+@@ -1079,7 +1079,7 @@
+     *   @return this RegexMatcher.
+     *   @stable ICU 2.8
+     */
+-    virtual RegexMatcher &reset(int64_t index, UErrorCode &status);
++    RegexMatcher &reset(int64_t index, UErrorCode &status);
+ 
+ 
+    /**
+@@ -1099,7 +1099,7 @@
+     *   @return this RegexMatcher.
+     *   @stable ICU 2.4
+     */
+-    virtual RegexMatcher &reset(const UnicodeString &input);
++    RegexMatcher &reset(const UnicodeString &input);
+ 
+ 
+    /**
+@@ -1115,7 +1115,7 @@
+     *
+     *   @stable ICU 4.6
+     */
+-    virtual RegexMatcher &reset(UText *input);
++    RegexMatcher &reset(UText *input);
+ 
+ 
+   /**
+@@ -1142,7 +1142,7 @@
+     *
+     * @stable ICU 4.8 
+     */
+-    virtual RegexMatcher &refreshInputText(UText *input, UErrorCode &status);
++    RegexMatcher &refreshInputText(UText *input, UErrorCode &status);
+ 
+ private:
+     /**
+@@ -1167,7 +1167,7 @@
+     *   @return the input string
+     *   @stable ICU 2.4
+     */
+-    virtual const UnicodeString &input() const;
++    const UnicodeString &input() const;
+     
+    /**
+     *   Returns the input string being matched.  This is the live input text; 
it should not be
+@@ -1177,7 +1177,7 @@
+     *
+     *   @stable ICU 4.6
+     */
+-    virtual UText *inputText() const;
++    UText *inputText() const;
+     
+    /**
+     *   Returns the input string being matched, either by copying it into the 
provided
+@@ -1189,7 +1189,7 @@
+     *
+     *   @stable ICU 4.6
+     */
+-    virtual UText *getInput(UText *dest, UErrorCode &status) const;
++    UText *getInput(UText *dest, UErrorCode &status) const;
+     
+ 
+    /** Sets the limits of this matcher's region.
+@@ -1210,7 +1210,7 @@
+      * @param status A reference to a UErrorCode to receive any errors.
+      * @stable ICU 4.0
+      */
+-     virtual RegexMatcher &region(int64_t start, int64_t limit, UErrorCode 
&status);
++     RegexMatcher &region(int64_t start, int64_t limit, UErrorCode &status);
+ 
+    /** 
+      * Identical to region(start, limit, status) but also allows a start 
position without
+@@ -1223,7 +1223,7 @@
+      *                U_INDEX_OUTOFBOUNDS_ERROR is returned.
+      * @stable ICU 4.6
+      */
+-     virtual RegexMatcher &region(int64_t regionStart, int64_t regionLimit, 
int64_t startIndex, UErrorCode &status);
++     RegexMatcher &region(int64_t regionStart, int64_t regionLimit, int64_t 
startIndex, UErrorCode &status);
+ 
+    /**
+      * Reports the start index of this matcher's region. The searches this 
matcher
+@@ -1233,7 +1233,7 @@
+      * @return The starting (native) index of this matcher's region.
+      * @stable ICU 4.0
+      */
+-     virtual int32_t regionStart() const;
++     int32_t regionStart() const;
+ 
+    /**
+      * Reports the start index of this matcher's region. The searches this 
matcher
+@@ -1243,7 +1243,7 @@
+      * @return The starting (native) index of this matcher's region.
+      * @stable ICU 4.6
+      */
+-     virtual int64_t regionStart64() const;
++     int64_t regionStart64() const;
+ 
+ 
+     /**
+@@ -1254,7 +1254,7 @@
+       * @return The ending point (native) of this matcher's region.
+       * @stable ICU 4.0
+       */
+-      virtual int32_t regionEnd() const;
++      int32_t regionEnd() const;
+ 
+    /**
+      * Reports the end (limit) index (exclusive) of this matcher's region. 
The searches
+@@ -1264,7 +1264,7 @@
+      * @return The ending point (native) of this matcher's region.
+      * @stable ICU 4.6
+      */
+-      virtual int64_t regionEnd64() const;
++      int64_t regionEnd64() const;
+ 
+     /**
+       * Queries the transparency of region bounds for this matcher.
+@@ -1274,7 +1274,7 @@
+       * @return true if this matcher is using opaque bounds, false if it is 
not.
+       * @stable ICU 4.0
+       */
+-      virtual UBool hasTransparentBounds() const;
++      UBool hasTransparentBounds() const;
+ 
+     /**
+       * Sets the transparency of region bounds for this matcher.
+@@ -1294,7 +1294,7 @@
+       * @return  This Matcher;
+       * @stable ICU 4.0
+       **/
+-      virtual RegexMatcher &useTransparentBounds(UBool b);
++      RegexMatcher &useTransparentBounds(UBool b);
+ 
+      
+     /**
+@@ -1304,7 +1304,7 @@
+       * @return true if this matcher is using anchoring bounds.
+       * @stable ICU 4.0
+       */    
+-      virtual UBool hasAnchoringBounds() const;
++      UBool hasAnchoringBounds() const;
+ 
+ 
+     /**
+@@ -1319,7 +1319,7 @@
+       * @return  This Matcher
+       * @stable ICU 4.0
+       */
+-      virtual RegexMatcher &useAnchoringBounds(UBool b);
++      RegexMatcher &useAnchoringBounds(UBool b);
+ 
+ 
+     /**
+@@ -1334,7 +1334,7 @@
+       *  @return  true if the most recent match hit the end of input
+       *  @stable ICU 4.0
+       */
+-      virtual UBool hitEnd() const;
++      UBool hitEnd() const;
+ 
+     /**
+       * Return true the most recent match succeeded and additional input 
could cause
+@@ -1345,7 +1345,7 @@
+       * @return true if more input could cause the most recent match to no 
longer match.
+       * @stable ICU 4.0
+       */
+-      virtual UBool requireEnd() const;
++      UBool requireEnd() const;
+ 
+ 
+    /**
+@@ -1353,7 +1353,7 @@
+     *    @return  the RegexPattern for this RegexMatcher
+     *    @stable ICU 2.4
+     */
+-    virtual const RegexPattern &pattern() const;
++    const RegexPattern &pattern() const;
+ 
+ 
+    /**
+@@ -1372,7 +1372,7 @@
+     *    @return              a string containing the results of the find and 
replace.
+     *    @stable ICU 2.4
+     */
+-    virtual UnicodeString replaceAll(const UnicodeString &replacement, 
UErrorCode &status);
++    UnicodeString replaceAll(const UnicodeString &replacement, UErrorCode 
&status);
+ 
+ 
+    /**
+@@ -1395,7 +1395,7 @@
+     *
+     *    @stable ICU 4.6
+     */
+-    virtual UText *replaceAll(UText *replacement, UText *dest, UErrorCode 
&status);
++    UText *replaceAll(UText *replacement, UText *dest, UErrorCode &status);
+     
+ 
+    /**
+@@ -1418,7 +1418,7 @@
+     *    @return              a string containing the results of the find and 
replace.
+     *    @stable ICU 2.4
+     */
+-    virtual UnicodeString replaceFirst(const UnicodeString &replacement, 
UErrorCode &status);
++    UnicodeString replaceFirst(const UnicodeString &replacement, UErrorCode 
&status);
+     
+ 
+    /**
+@@ -1445,7 +1445,7 @@
+     *
+     *    @stable ICU 4.6
+     */
+-    virtual UText *replaceFirst(UText *replacement, UText *dest, UErrorCode 
&status);
++    UText *replaceFirst(UText *replacement, UText *dest, UErrorCode &status);
+     
+     
+    /**
+@@ -1475,7 +1475,7 @@
+     *   @stable ICU 2.4
+     *
+     */
+-    virtual RegexMatcher &appendReplacement(UnicodeString &dest,
++    RegexMatcher &appendReplacement(UnicodeString &dest,
+         const UnicodeString &replacement, UErrorCode &status);
+     
+     
+@@ -1506,7 +1506,7 @@
+     *
+     *   @stable ICU 4.6
+     */
+-    virtual RegexMatcher &appendReplacement(UText *dest,
++    RegexMatcher &appendReplacement(UText *dest,
+         UText *replacement, UErrorCode &status);
+ 
+ 
+@@ -1520,7 +1520,7 @@
+     *  @return  the destination string.
+     *  @stable ICU 2.4
+     */
+-    virtual UnicodeString &appendTail(UnicodeString &dest);
++    UnicodeString &appendTail(UnicodeString &dest);
+ 
+ 
+    /**
+@@ -1536,7 +1536,7 @@
+     *
+     *  @stable ICU 4.6
+     */
+-    virtual UText *appendTail(UText *dest, UErrorCode &status);
++    UText *appendTail(UText *dest, UErrorCode &status);
+ 
+ 
+     /**
+@@ -1562,7 +1562,7 @@
+      * @return        The number of fields into which the input string was 
split.
+      * @stable ICU 2.6
+      */
+-    virtual int32_t  split(const UnicodeString &input,
++    int32_t  split(const UnicodeString &input,
+         UnicodeString    dest[],
+         int32_t          destCapacity,
+         UErrorCode       &status);
+@@ -1591,7 +1591,7 @@
+      *
+      * @stable ICU 4.6
+      */
+-    virtual int32_t  split(UText *input,
++    int32_t  split(UText *input,
+         UText           *dest[],
+         int32_t          destCapacity,
+         UErrorCode       &status);
+@@ -1617,7 +1617,7 @@
+     *   @param   status      A reference to a UErrorCode to receive any 
errors.
+     *   @stable ICU 4.0
+     */
+-    virtual void setTimeLimit(int32_t limit, UErrorCode &status);
++    void setTimeLimit(int32_t limit, UErrorCode &status);
+ 
+   /**
+     * Get the time limit, if any, for match operations made with this Matcher.
+@@ -1625,7 +1625,7 @@
+     *   @return the maximum allowed time for a match, in units of processing 
steps.
+     *   @stable ICU 4.0
+     */
+-    virtual int32_t getTimeLimit() const;
++    int32_t getTimeLimit() const;
+ 
+   /**
+     *  Set the amount of heap storage available for use by the match 
backtracking stack.
+@@ -1648,7 +1648,7 @@
+     *
+     *  @stable ICU 4.0
+     */
+-    virtual void setStackLimit(int32_t  limit, UErrorCode &status);
++    void setStackLimit(int32_t  limit, UErrorCode &status);
+     
+   /**
+     *  Get the size of the heap storage available for use by the back 
tracking stack.
+@@ -1657,7 +1657,7 @@
+     *           stack size is unlimited.
+     *  @stable ICU 4.0
+     */
+-    virtual int32_t  getStackLimit() const;
++    int32_t  getStackLimit() const;
+ 
+ 
+   /**
+@@ -1673,7 +1673,7 @@
+     *    @param   status      A reference to a UErrorCode to receive any 
errors.
+     *  @stable ICU 4.0
+     */
+-    virtual void setMatchCallback(URegexMatchCallback     *callback,
++    void setMatchCallback(URegexMatchCallback     *callback,
+                                   const void              *context,
+                                   UErrorCode              &status);
+ 
+@@ -1688,7 +1688,7 @@
+     *    @param   status      A reference to a UErrorCode to receive any 
errors.
+     *    @stable ICU 4.0
+     */
+-    virtual void getMatchCallback(URegexMatchCallback     *&callback,
++    void getMatchCallback(URegexMatchCallback     *&callback,
+                                   const void              *&context,
+                                   UErrorCode              &status);
+ 
+@@ -1706,7 +1706,7 @@
+     *    @param   status      A reference to a UErrorCode to receive any 
errors.
+     *    @stable ICU 4.6
+     */
+-    virtual void setFindProgressCallback(URegexFindProgressCallback      
*callback,
++    void setFindProgressCallback(URegexFindProgressCallback      *callback,
+                                               const void                      
        *context,
+                                               UErrorCode                      
        &status);
+ 
+@@ -1721,7 +1721,7 @@
+     *    @param   status      A reference to a UErrorCode to receive any 
errors.
+     *    @stable ICU 4.6
+     */
+-    virtual void getFindProgressCallback(URegexFindProgressCallback      
*&callback,
++    void getFindProgressCallback(URegexFindProgressCallback      *&callback,
+                                               const void                      
*&context,
+                                               UErrorCode                      
&status);
+ 
+--- source/i18n/unicode/tblcoll.h
++++ source/i18n/unicode/tblcoll.h
+@@ -242,7 +242,7 @@
+      *         the based Collator.
+      * @stable ICU 2.2
+      */
+-    virtual CollationElementIterator* createCollationElementIterator(
++    CollationElementIterator* createCollationElementIterator(
+                                            const UnicodeString& source) const;
+ 
+     /**
+@@ -254,7 +254,7 @@
+      *         based Collator.
+      * @stable ICU 2.2
+      */
+-    virtual CollationElementIterator* createCollationElementIterator(
++    CollationElementIterator* createCollationElementIterator(
+                                          const CharacterIterator& source) 
const;
+ 
+     // Make deprecated versions of Collator::compare() visible.

Reply via email to