| package test.wksp.eclipse; |
| |
| public class X23 { |
| |
| /** |
| * Reorders the declarations in the given compilation unit. The caller is |
| * responsible for arranging in advance that the given compilation unit is a |
| * working copy, and for saving the changes afterwards. |
| * <p> |
| * <b>Note:</b> Reordering the members within a type declaration might be |
| * more than a cosmetic change and could have potentially serious |
| * repercussions. Firstly, the order in which the fields of a type are |
| * initialized is significant in the Java language; reordering fields and |
| * initializers may result in compilation errors or change the execution |
| * behavior of the code. Secondly, reordering a class's members may affect |
| * how its instances are serialized. This operation should therefore be used |
| * with caution and due concern for potential negative side effects. |
| * </p> |
| * <p> |
| * The optional <code>positions</code> array contains a non-decreasing |
| * ordered list of character-based source positions within the compilation |
| * unit's source code string. Upon return from this method, the positions in |
| * the array reflect the corresponding new locations in the modified source |
| * code string, Note that this operation modifies the given array in place. |
| * </p> |
| * <p> |
| * The <code>compare</code> method of the given comparator is passed pairs |
| * of AST body declarations (subclasses of <code>BodyDeclaration</code>) |
| * representing body declarations at the same level. The comparator is |
| * called on body declarations of nested classes, including anonymous and |
| * local classes, but always at the same level. Clients need to provide a |
| * comparator implementation (there is no standard comparator). The |
| * <code>RELATIVE_ORDER</code> property attached to these AST nodes afforts |
| * the comparator a way to preserve the original relative order. |
| * </p> |
| * <p> |
| * The body declarations passed as parameters to the comparator always carry |
| * at least the following minimal signature information: <br> |
| * <table border="1" width="80%" cellpadding="5"> |
| * <tr> |
| * <td width="20%"><code>TypeDeclaration</code></td> |
| * <td width="50%"><code>modifiers, isInterface, name, superclass, |
| * superInterfaces<br> |
| * RELATIVE_ORDER property</code></td> |
| * </tr> |
| * <tr> |
| * <td width="20%"><code>FieldDeclaration</code></td> |
| * <td width="50%"><code>modifiers, type, fragments |
| * (VariableDeclarationFragments |
| * with name only)<br> |
| * RELATIVE_ORDER property</code></td> |
| * </tr> |
| * <tr> |
| * <td width="20%"><code>MethodDeclaration</code></td> |
| * <td width="50%"><code>modifiers, isConstructor, returnType, name, |
| * parameters |
| * (SingleVariableDeclarations with name and type only), |
| * thrownExceptions<br> |
| * RELATIVE_ORDER property</code></td> |
| * </tr> |
| * <tr> |
| * <td width="20%"><code>Initializer</code></td> |
| * <td width="50%"><code>modifiers<br> |
| * RELATIVE_ORDER property</code></td> |
| * </tr> |
| * </table> |
| * Clients should not rely on the AST nodes being properly parented or on |
| * having source range information. (Future releases may provide options for |
| * requesting additional information like source positions, full ASTs, |
| * non-recursive sorting, etc.) |
| * </p> |
| * |
| * @param compilationUnit |
| * the given compilation unit, which must be a working copy |
| * @param positions |
| * an array of source positions to map, or <code>null</code> if none. If |
| * supplied, the positions must character-based source positions within the |
| * original source code for the given compilation unit, arranged in |
| * non-decreasing order. The array is updated in place when this method |
| * returns to reflect the corresponding source positions in the permuted |
| * source code string (but not necessarily any longer in non-decreasing |
| * order). |
| * @param comparator |
| * the comparator capable of ordering <code>BodyDeclaration</code>s |
| * @param options |
| * bitwise-or of option flags; <code>0</code> for default behavior (reserved |
| * for future growth) |
| * @param monitor |
| * the progress monitor to notify, or <code>null</code> if none |
| * @exception JavaModelException |
| * if the compilation unit could not be sorted. Reasons include: |
| * <ul> |
| * <li>The given compilation unit does not exist (ELEMENT_DOES_NOT_EXIST)</li> |
| * <li>The given compilation unit is not a working copy |
| * (INVALID_ELEMENT_TYPES)</li> |
| * <li>A <code>CoreException</code> occurred while accessing the underlying |
| * resource |
| * </ul> |
| * @exception IllegalArgumentException |
| * if the given compilation unit is null or if the given comparator is null. |
| * @see org.eclipse.jdt.core.dom.BodyDeclaration |
| * @see #RELATIVE_ORDER |
| */ |
| void foo() { |
| } |
| } |