I was investigating what would need to be done to implement camel-case code assist for the Scala plugin when I ran across the following gem in CharOperation (Eclipse JDT):
public static final boolean camelCaseMatch(char[] pattern, int patternStart, int patternEnd, char[] name, int nameStart, int nameEnd, boolean samePartCount) {
/* !!!!!!!!!! WARNING !!!!!!!!!!
* The content of this method has been fully copied to
* SearchPattern#camelCaseMatch(String, int, int, String, int, int, boolean).
*
* So, if current method is modified, do NOT forget to copy again its content
* to SearchPattern corresponding method!
*/
And in SearchPattern:
public static final boolean camelCaseMatch(String pattern, int patternStart, int patternEnd, String name, int nameStart, int nameEnd, boolean samePartCount) {
/* !!!!!!!!!! WARNING !!!!!!!!!!
* The algorithm of this method has been entirely copied from
* CharOperation#camelCaseMatch(char[], int, int, char[], int, int, boolean).
* Array lengths have been replaced with call to {@link String#length()} and
* array direct access have been replaced with call to {@link String#charAt(int)}.
*
* So, do NOT modify this method directly to fix any bug but modify first the
* corresponding CharOperation method and do the copy again to be sure that
* these two methods are kept synchronized.
*/
I am sure there is a reason why this was done, but how ugly…
Update: At least JDT made it easy to implement what I wanted.
2 Responses »