|
 |
|
|
org.eclipse.jdt.core.dom
Class CompilationUnit
java.lang.Object
org.eclipse.jdt.core.dom.ASTNode
org.eclipse.jdt.core.dom.CompilationUnit
-
public class CompilationUnit
- extends
ASTNode
Java compilation unit AST node type. This is the type of the root of an AST.
The source range for this type of node is ordinarily the entire source file,
including leading and trailing whitespace and comments.
For JLS2:
CompilationUnit:
[ PackageDeclaration ]
{ ImportDeclaration }
{ TypeDeclaration | ; }
For JLS3, the kinds of type declarations
grew to include enum and annotation type declarations:
CompilationUnit:
[ PackageDeclaration ]
{ ImportDeclaration }
{ TypeDeclaration | EnumDeclaration | AnnotationTypeDeclaration | ; }
-
Since:
- 2.0
-
Restriction:
- This class is not intended to be instantiated by clients.
Fields inherited from class org.eclipse.jdt.core.dom.
ASTNode
|
ANNOTATION_TYPE_DECLARATION,
ANNOTATION_TYPE_MEMBER_DECLARATION,
ANONYMOUS_CLASS_DECLARATION,
ARRAY_ACCESS,
ARRAY_CREATION,
ARRAY_INITIALIZER,
ARRAY_TYPE,
ASSERT_STATEMENT,
ASSIGNMENT,
BLOCK,
BLOCK_COMMENT,
BOOLEAN_LITERAL,
BREAK_STATEMENT,
CAST_EXPRESSION,
CATCH_CLAUSE,
CHARACTER_LITERAL,
CLASS_INSTANCE_CREATION,
COMPILATION_UNIT,
CONDITIONAL_EXPRESSION,
CONSTRUCTOR_INVOCATION,
CONTINUE_STATEMENT,
DO_STATEMENT,
EMPTY_STATEMENT,
ENHANCED_FOR_STATEMENT,
ENUM_CONSTANT_DECLARATION,
ENUM_DECLARATION,
EXPRESSION_STATEMENT,
FIELD_ACCESS,
FIELD_DECLARATION,
FOR_STATEMENT,
IF_STATEMENT,
IMPORT_DECLARATION,
INFIX_EXPRESSION,
INITIALIZER,
INSTANCEOF_EXPRESSION,
JAVADOC,
LABELED_STATEMENT,
LINE_COMMENT,
MALFORMED,
MARKER_ANNOTATION,
MEMBER_REF,
MEMBER_VALUE_PAIR,
METHOD_DECLARATION,
METHOD_INVOCATION,
METHOD_REF,
METHOD_REF_PARAMETER,
MODIFIER,
NORMAL_ANNOTATION,
NULL_LITERAL,
NUMBER_LITERAL,
ORIGINAL,
PACKAGE_DECLARATION,
PARAMETERIZED_TYPE,
PARENTHESIZED_EXPRESSION,
POSTFIX_EXPRESSION,
PREFIX_EXPRESSION,
PRIMITIVE_TYPE,
PROTECT,
QUALIFIED_NAME,
QUALIFIED_TYPE,
RECOVERED,
RETURN_STATEMENT,
SIMPLE_NAME,
SIMPLE_TYPE,
SINGLE_MEMBER_ANNOTATION,
SINGLE_VARIABLE_DECLARATION,
STRING_LITERAL,
SUPER_CONSTRUCTOR_INVOCATION,
SUPER_FIELD_ACCESS,
SUPER_METHOD_INVOCATION,
SWITCH_CASE,
SWITCH_STATEMENT,
SYNCHRONIZED_STATEMENT,
TAG_ELEMENT,
TEXT_ELEMENT,
THIS_EXPRESSION,
THROW_STATEMENT,
TRY_STATEMENT,
TYPE_DECLARATION,
TYPE_DECLARATION_STATEMENT,
TYPE_LITERAL,
TYPE_PARAMETER,
VARIABLE_DECLARATION_EXPRESSION,
VARIABLE_DECLARATION_FRAGMENT,
VARIABLE_DECLARATION_STATEMENT,
WHILE_STATEMENT,
WILDCARD_TYPE
|
Method Summary
|
ASTNode
|
findDeclaringNode
(
IBinding binding)
Finds the corresponding AST node in the given compilation unit from
which the given binding originated. |
ASTNode
|
findDeclaringNode
(
String key)
Finds the corresponding AST node in the given compilation unit from
which the binding with the given key originated. |
int
|
firstLeadingCommentIndex
(
ASTNode node)
Return the index in the whole comments list
getCommentList()
of the first leading comments associated with the given node. |
int
|
getColumnNumber
(int position)
Returns the column number corresponding to the given source character
position in the original source string. |
List
|
getCommentList
()
Returns a list of the comments encountered while parsing
this compilation unit. |
int
|
getExtendedLength
(
ASTNode node)
Returns the extended source length of the given node. |
int
|
getExtendedStartPosition
(
ASTNode node)
Returns the extended start position of the given node. |
IJavaElement
|
getJavaElement
()
The Java element (an org.eclipse.jdt.core.ICompilationUnit or an org.eclipse.jdt.core.IClassFile )
this compilation unit was created from, or null if it was not created from a Java element. |
int
|
getLineNumber
(int position)
Returns the line number corresponding to the given source character
position in the original source string. |
Message[]
|
getMessages
()
Returns the list of messages reported by the compiler during the parsing
or the type checking of this compilation unit. |
PackageDeclaration
|
getPackage
()
Returns the node for the package declaration of this compilation
unit, or null if this compilation unit is in the
default package. |
int
|
getPosition
(int line,
int column)
Given a line number and column number, returns the corresponding
position in the original source string. |
IProblem[]
|
getProblems
()
Returns the list of detailed problem reports noted by the compiler
during the parsing or the type checking of this compilation unit. |
Object
|
getStatementsRecoveryData
()
Internal method
This method return internal data used to perform statements recovery. |
ITypeRoot
|
getTypeRoot
()
The Java type root (a
compilation unit or a
class file )
this compilation unit was created from, or null if it was not created from a Java type root. |
List
|
imports
()
Returns the live list of nodes for the import declarations of this
compilation unit, in order of appearance. |
int
|
lastTrailingCommentIndex
(
ASTNode node)
Return the index in the whole comments list
getCommentList()
of the last trailing comments associated with the given node. |
int
|
lineNumber
(int position)
Deprecated. Use getLineNumber(int) instead. Be careful to handle the negative values.
|
static
List
|
propertyDescriptors
(int apiLevel)
Returns a list of structural property descriptors for this node type. |
void
|
recordModifications
()
Enables the recording of changes to this compilation
unit and its descendents. |
TextEdit
|
rewrite
(
IDocument document,
Map options)
Converts all modifications recorded for this compilation
unit into an object representing the corresponding text
edits to the given document containing the original source
code for this compilation unit. |
void
|
setPackage
(
PackageDeclaration pkgDecl)
Sets or clears the package declaration of this compilation unit
node to the given package declaration node. |
List
|
types
()
Returns the live list of nodes for the top-level type declarations of this
compilation unit, in order of appearance. |
Methods inherited from class org.eclipse.jdt.core.dom.
ASTNode
|
accept,
copySubtree,
copySubtrees,
delete,
equals,
getAST,
getFlags,
getLength,
getLocationInParent,
getNodeType,
getParent,
getProperty,
getRoot,
getStartPosition,
getStructuralProperty,
hashCode,
nodeClassForType,
properties,
setFlags,
setProperty,
setSourceRange,
setStructuralProperty,
structuralPropertiesForType,
subtreeBytes,
subtreeMatch,
toString
|
IMPORTS_PROPERTY
public static final
ChildListPropertyDescriptor IMPORTS_PROPERTY
- The "imports" structural property of this node type.
-
Since:
- 3.0
PACKAGE_PROPERTY
public static final
ChildPropertyDescriptor PACKAGE_PROPERTY
- The "package" structural property of this node type.
-
Since:
- 3.0
TYPES_PROPERTY
public static final
ChildListPropertyDescriptor TYPES_PROPERTY
- The "types" structural property of this node type.
-
Since:
- 3.0
propertyDescriptors
public static
List propertyDescriptors(int apiLevel)
- Returns a list of structural property descriptors for this node type.
Clients must not modify the result.
-
-
Parameters:
-
apiLevel - the API level; one of the
AST.JLS* constants
-
Returns:
- a list of property descriptors (element type:
StructuralPropertyDescriptor ) -
Since:
- 3.0
getColumnNumber
public int getColumnNumber(int position)
- Returns the column number corresponding to the given source character
position in the original source string. Column number are zero-based.
Return
-1 if it is beyond the valid range or -2
if the column number information is unknown.
-
-
Parameters:
-
position - a 0-based character position, possibly
negative or out of range
-
Returns:
- the 0-based column number, or
-1 if the character
position does not correspond to a source line in the original
source file or -2 if column number information is unknown for this
compilation unit -
Since:
- 3.2
-
See Also:
-
ASTParser
findDeclaringNode
public
ASTNode findDeclaringNode(
IBinding binding)
- Finds the corresponding AST node in the given compilation unit from
which the given binding originated. Returns
null if the
binding does not correspond to any node in this compilation unit.
This method always returns null if bindings were not requested
when this AST was built.
The following table indicates the expected node type for the various
different kinds of bindings:
- package - a
PackageDeclaration
- class or interface - a
TypeDeclaration or a
AnonymousClassDeclaration (for anonymous classes)
- primitive type - none
- array type - none
- field - a
VariableDeclarationFragment in a
FieldDeclaration
- local variable - a
SingleVariableDeclaration , or
a VariableDeclarationFragment in a
VariableDeclarationStatement or
VariableDeclarationExpression
- method - a
MethodDeclaration
- constructor - a
MethodDeclaration
- annotation type - an
AnnotationTypeDeclaration
- annotation type member - an
AnnotationTypeMemberDeclaration
- enum type - an
EnumDeclaration
- enum constant - an
EnumConstantDeclaration
- type variable - a
TypeParameter
- capture binding - none
- annotation binding - an
Annotation
- member value pair binding - an
MemberValuePair ,
or null if it represents a default value or a single member value
For parameterized or raw type bindings, the declaring node is
that of the corresponding generic type. And for parameterized or raw
method bindings, the declaring node is that of the corresponding
generic method.
Each call to
ASTParser.createAST(org.eclipse.core.runtime.IProgressMonitor) with a request for bindings
gives rise to separate universe of binding objects. This method always returns
null when the binding object comes from a different AST.
Use findDeclaringNode(binding.getKey()) when the binding comes
from a different AST.
-
-
Parameters:
-
binding - the binding
-
Returns:
- the corresponding node where the given binding is declared,
or
null if the binding does not correspond to a node in this
compilation unit or if bindings were not requested when this AST was built -
See Also:
-
findDeclaringNode(String)
findDeclaringNode
public
ASTNode findDeclaringNode(
String key)
- Finds the corresponding AST node in the given compilation unit from
which the binding with the given key originated. Returns
null if the corresponding node cannot be determined.
This method always returns null if bindings were not requested
when this AST was built.
The following table indicates the expected node type for the various
different kinds of binding keys:
-
- package - a
PackageDeclaration
- class or interface - a
TypeDeclaration or a
AnonymousClassDeclaration (for anonymous classes)
- primitive type - none
- array type - none
- field - a
VariableDeclarationFragment in a
FieldDeclaration
- local variable - a
SingleVariableDeclaration , or
a VariableDeclarationFragment in a
VariableDeclarationStatement or
VariableDeclarationExpression
- method - a
MethodDeclaration
- constructor - a
MethodDeclaration
- annotation type - an
AnnotationTypeDeclaration
- annotation type member - an
AnnotationTypeMemberDeclaration
- enum type - an
EnumDeclaration
- enum constant - an
EnumConstantDeclaration
- type variable - a
TypeParameter
- capture binding - none
For parameterized or raw type bindings, the declaring node is
that of the corresponding generic type. And for parameterized or raw
method bindings, the declaring node is that of the corresponding
generic method.
-
-
Parameters:
-
key - the binding key, or null
-
Returns:
- the corresponding node where a binding with the given
key is declared, or
null if the key is null
or if the key does not correspond to a node in this compilation unit
or if bindings were not requested when this AST was built -
Since:
- 2.1
-
See Also:
-
IBinding.getKey()
getCommentList
public
List getCommentList()
- Returns a list of the comments encountered while parsing
this compilation unit.
Since the Java language allows comments to appear most anywhere
in the source text, it is problematic to locate comments in relation
to the structure of an AST. The one exception is doc comments
which, by convention, immediately precede type, field, and
method declarations; these comments are located in the AST
by
BodyDeclaration.getJavadoc .
Other comments do not show up in the AST. The table of comments
is provided for clients that need to find the source ranges of
all comments in the original source string. It includes entries
for comments of all kinds (line, block, and doc), arranged in order
of increasing source position.
Note on comment parenting: The
getParent()
of a doc comment associated with a body declaration is the body
declaration node; for these comment nodes
getRoot() will return the compilation unit
(assuming an unmodified AST) reflecting the fact that these nodes
are property located in the AST for the compilation unit.
However, for other comment nodes,
getParent()
will return null , and
getRoot()
will return the comment node itself, indicating that these comment nodes
are not directly connected to the AST for the compilation unit. The
Comment.getAlternateRoot
method provides a way to navigate from a comment to its compilation
unit.
A note on visitors: The only comment nodes that will be visited when
visiting a compilation unit are the doc comments parented by body
declarations. To visit all comments in normal reading order, iterate
over the comment table and call
accept
on each element.
Clients cannot modify the resulting list.
-
-
Returns:
- an unmodifiable list of comments in increasing order of source
start position, or
null if comment information
for this compilation unit is not available -
Since:
- 3.0
-
See Also:
-
ASTParser
getExtendedLength
public int getExtendedLength(
ASTNode node)
- Returns the extended source length of the given node. Unlike
ASTNode.getStartPosition() and
ASTNode.getLength() ,
the extended source range may include comments and whitespace
immediately before or after the normal source range for the node.
-
-
Parameters:
-
node - the node
-
Returns:
- a (possibly 0) length, or
0
if no source position information is recorded for this node -
Since:
- 3.0
-
See Also:
-
getExtendedStartPosition(ASTNode)
getExtendedStartPosition
public int getExtendedStartPosition(
ASTNode node)
- Returns the extended start position of the given node. Unlike
ASTNode.getStartPosition() and
ASTNode.getLength() ,
the extended source range may include comments and whitespace
immediately before or after the normal source range for the node.
-
-
Parameters:
-
node - the node
-
Returns:
- the 0-based character index, or
-1
if no source position information is recorded for this node -
Since:
- 3.0
-
See Also:
-
getExtendedLength(ASTNode)
getJavaElement
public
IJavaElement getJavaElement()
- The Java element (an
org.eclipse.jdt.core.ICompilationUnit or an org.eclipse.jdt.core.IClassFile )
this compilation unit was created from, or null if it was not created from a Java element.
-
-
Returns:
- the Java element this compilation unit was created from, or
null if none -
Since:
- 3.1
-
See Also:
-
getTypeRoot()
getMessages
public
Message[] getMessages()
- Returns the list of messages reported by the compiler during the parsing
or the type checking of this compilation unit. This list might be a subset of
errors detected and reported by a Java compiler.
This list of messages is suitable for simple clients that do little
more than log the messages or display them to the user. Clients that
need further details should call getProblems to get
compiler problem objects.
-
-
Returns:
- the list of messages, possibly empty
-
See Also:
-
getProblems() ,
ASTParser
getPackage
public
PackageDeclaration getPackage()
- Returns the node for the package declaration of this compilation
unit, or
null if this compilation unit is in the
default package.
-
-
Returns:
- the package declaration node, or
null if none
getPosition
public int getPosition(int line,
int column)
- Given a line number and column number, returns the corresponding
position in the original source string.
Returns -2 if no line number information is available for this
compilation unit.
Returns the total size of the source string if
line
is greater than the actual number lines in the unit.
Returns -1 if column is less than 0,
or the position of the last character of the line if column
is beyond the legal range, or the given line number is less than one.
-
-
Parameters:
-
line - the one-based line number -
column - the zero-based column number
-
Returns:
- the 0-based character position in the source string;
-2 if line/column number information is not known
for this compilation unit or -1 the inputs are not valid -
Since:
- 3.2
getProblems
public
IProblem[] getProblems()
- Returns the list of detailed problem reports noted by the compiler
during the parsing or the type checking of this compilation unit. This
list might be a subset of errors detected and reported by a Java
compiler.
Simple clients that do little more than log the messages or display
them to the user should probably call getMessages instead.
-
-
Returns:
- the list of detailed problem objects, possibly empty
-
Since:
- 2.1
-
See Also:
-
getMessages() ,
ASTParser
getStatementsRecoveryData
public
Object getStatementsRecoveryData()
- Internal method
This method return internal data used to perform statements recovery.
-
-
Returns:
- internal data used to perform statements recovery.
-
Since:
- 3.5
-
Restriction:
- This method is not intended to be referenced by clients.
getTypeRoot
public
ITypeRoot getTypeRoot()
- The Java type root (a
compilation unit or a
class file )
this compilation unit was created from, or null if it was not created from a Java type root.
-
-
Returns:
- the Java type root this compilation unit was created from, or
null if none -
Since:
- 3.3
imports
public
List imports()
- Returns the live list of nodes for the import declarations of this
compilation unit, in order of appearance.
-
-
Returns:
- the live list of import declaration nodes
(elementType:
ImportDeclaration )
firstLeadingCommentIndex
public int firstLeadingCommentIndex(
ASTNode node)
- Return the index in the whole comments list
getCommentList()
of the first leading comments associated with the given node.
-
-
Parameters:
-
node - the node
-
Returns:
- 0-based index of first leading comment or -1 if node has no associated
comment before its start position.
-
Since:
- 3.2
lastTrailingCommentIndex
public int lastTrailingCommentIndex(
ASTNode node)
- Return the index in the whole comments list
getCommentList()
of the last trailing comments associated with the given node.
-
-
Parameters:
-
node - the node
-
Returns:
- 0-based index of last trailing comment or -1 if node has no
associated comment after its end position.
-
Since:
- 3.2
lineNumber
public int lineNumber(int position)
-
Deprecated. Use getLineNumber(int) instead. Be careful to handle the negative values.
- Returns the line number corresponding to the given source character
position in the original source string. The initial line of the
compilation unit is numbered 1, and each line extends through the
last character of the end-of-line delimiter. The very last line extends
through the end of the source string and has no line delimiter.
For example, the source string
class A\n{\n} has 3 lines
corresponding to inclusive character ranges [0,7], [8,9], and [10,10].
Returns 1 for a character position that does not correspond to any
source line, or if no line number information is available for this
compilation unit.
-
-
Parameters:
-
position - a 0-based character position, possibly
negative or out of range
-
Returns:
- the 1-based line number, or
1 if the character
position does not correspond to a source line in the original
source file or if line number information is not known for this
compilation unit -
See Also:
-
ASTParser ,
getLineNumber(int)
getLineNumber
public int getLineNumber(int position)
- Returns the line number corresponding to the given source character
position in the original source string. The initial line of the
compilation unit is numbered 1, and each line extends through the
last character of the end-of-line delimiter. The very last line extends
through the end of the source string and has no line delimiter.
For example, the source string
class A\n{\n} has 3 lines
corresponding to inclusive character ranges [0,7], [8,9], and [10,10].
Returns -1 for a character position that does not correspond to any
source line, or -2 if no line number information is available for this
compilation unit.
-
-
Parameters:
-
position - a 0-based character position, possibly
negative or out of range
-
Returns:
- the 1-based line number, or
-1 if the character
position does not correspond to a source line in the original
source file or -2 if line number information is not known for this
compilation unit -
Since:
- 3.2
-
See Also:
-
ASTParser
recordModifications
public void recordModifications()
- Enables the recording of changes to this compilation
unit and its descendents. The compilation unit must have
been created by
ASTParser and still be in
its original state. Once recording is on,
arbitrary changes to the subtree rooted at this compilation
unit are recorded internally. Once the modification has
been completed, call rewrite to get an object
representing the corresponding edits to the original
source code string.
-
-
Throws:
-
IllegalArgumentException
- if this compilation unit is
marked as unmodifiable, or if this compilation unit has already
been tampered with, or recording has already been enabled -
Since:
- 3.0
rewrite
public
TextEdit rewrite(
IDocument document,
Map options)
- Converts all modifications recorded for this compilation
unit into an object representing the corresponding text
edits to the given document containing the original source
code for this compilation unit.
The compilation unit must have been created by
ASTParser from the source code string in the
given document, and recording must have been turned
on with a prior call to recordModifications
while the AST was still in its original state.
Calling this methods does not discard the modifications
on record. Subsequence modifications made to the AST
are added to the ones already on record. If this method
is called again later, the resulting text edit object will
accurately reflect the net cumulative affect of all those
changes.
-
-
Parameters:
-
document - original document containing source code
for this compilation unit -
options - the table of formatter options
(key type: String ; value type: String );
or null to use the standard global options
JavaCore.getOptions() .
-
Returns:
- text edit object describing the changes to the
document corresponding to the recorded AST modifications
-
Throws:
-
IllegalArgumentException
- if the document passed is
null or does not correspond to this AST
-
IllegalStateException
- if recordModifications
was not called to enable recording -
Since:
- 3.0
-
See Also:
-
recordModifications()
setPackage
public void setPackage(
PackageDeclaration pkgDecl)
- Sets or clears the package declaration of this compilation unit
node to the given package declaration node.
-
-
Parameters:
-
pkgDecl - the new package declaration node, or
null if this compilation unit does not have a package
declaration (that is in the default package)
-
Throws:
-
IllegalArgumentException
- if:
- the node belongs to a different AST
- the node already has a parent
types
public
List types()
- Returns the live list of nodes for the top-level type declarations of this
compilation unit, in order of appearance.
Note that in JLS3, the types may include both enum declarations
and annotation type declarations introduced in J2SE 5.
For JLS2, the elements are always TypeDeclaration .
-
-
Returns:
- the live list of top-level type declaration
nodes (elementType:
AbstractTypeDeclaration )
Copyright (c) IBM Corp. and others 2000, 2008. All Rights Reserved.
|
|
|