diff options
author | Anton Leherbauer | 2007-03-22 14:28:35 +0000 |
---|---|---|
committer | Anton Leherbauer | 2007-03-22 14:28:35 +0000 |
commit | 34cf7052a6c2f81b08352c6055878526a357508d (patch) | |
tree | 217a4b30782707af0345e3c53f520519b4a1ab7c /core/org.eclipse.cdt.core/parser/org | |
parent | b0bdfa4229a32c0997a47160247f5ed2a9889ab9 (diff) | |
download | org.eclipse.cdt-34cf7052a6c2f81b08352c6055878526a357508d.tar.gz org.eclipse.cdt-34cf7052a6c2f81b08352c6055878526a357508d.tar.xz org.eclipse.cdt-34cf7052a6c2f81b08352c6055878526a357508d.zip |
Fix for 178577: need IASTCompletionNode interface in dom parser (patch by Mike Kucera)
Diffstat (limited to 'core/org.eclipse.cdt.core/parser/org')
6 files changed, 67 insertions, 46 deletions
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/ASTCompletionNode.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/ASTCompletionNode.java index 459f34adfc0..bf025edb807 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/ASTCompletionNode.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/ASTCompletionNode.java @@ -16,19 +16,10 @@ import java.util.List; import org.eclipse.cdt.core.parser.IToken; /** - * This class represents the node that would occur at the point of a context - * completion. - * - * This node may contain the prefix text of an identifer up to the point. If - * there is no prefix, the completion occurred at the point where a new token - * would have begun. - * - * The node points to the parent node where this node, if replaced by a proper - * node, would reside in the tree. * * @author Doug Schaefer */ -public class ASTCompletionNode { +public class ASTCompletionNode implements IASTCompletionNode { private IToken completionToken; @@ -36,8 +27,6 @@ public class ASTCompletionNode { private IASTTranslationUnit translationUnit; - // used for debug - public int count; /** * Only constructor. @@ -59,38 +48,29 @@ public class ASTCompletionNode { names.add(name); } - /** - * If the point of completion was at the end of a potential identifier, this - * string contains the text of that identifier. - * - * @return the prefix text up to the point of completion + /* (non-Javadoc) + * @see org.eclipse.cdt.core.dom.ast.IASTCompletionNode#getPrefix() */ public String getPrefix() { return completionToken.getType() != IToken.tEOC ? completionToken.getImage() : ""; //$NON-NLS-1$ } - /** - * Get the length of the completion point. - * - * @return length of completion token + /* (non-Javadoc) + * @see org.eclipse.cdt.core.dom.ast.IASTCompletionNode#getLength() */ public int getLength() { return completionToken.getLength(); } - /** - * Get a list of names that fit in this context. - * - * @return array of IASTName's + /* (non-Javadoc) + * @see org.eclipse.cdt.core.dom.ast.IASTCompletionNode#getNames() */ public IASTName[] getNames() { return (IASTName[]) names.toArray(new IASTName[names.size()]); } - /** - * Get the translation unit for this completion - * - * @return the translation unit + /* (non-Javadoc) + * @see org.eclipse.cdt.core.dom.ast.IASTCompletionNode#getTranslationUnit() */ public IASTTranslationUnit getTranslationUnit() { return translationUnit; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTCompletionNode.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTCompletionNode.java new file mode 100644 index 00000000000..76d21301994 --- /dev/null +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/IASTCompletionNode.java @@ -0,0 +1,45 @@ +package org.eclipse.cdt.core.dom.ast; + +/** + * This represents the node that would occur at the point of a context + * completion. + * + * This node may contain the prefix text of an identifer up to the point. If + * there is no prefix, the completion occurred at the point where a new token + * would have begun. + * + * The node points to the parent node where this node, if replaced by a proper + * node, would reside in the tree. + */ +public interface IASTCompletionNode { + + /** + * If the point of completion was at the end of a potential identifier, this + * string contains the text of that identifier. + * + * @return the prefix text up to the point of completion + */ + public String getPrefix(); + + /** + * Get the length of the completion point. + * + * @return length of completion token + */ + public int getLength(); + + /** + * Get a list of names that fit in this context. + * + * @return array of IASTName's + */ + public IASTName[] getNames(); + + /** + * Get the translation unit for this completion + * + * @return the translation unit + */ + public IASTTranslationUnit getTranslationUnit(); + +} diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/ISourceCodeParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/ISourceCodeParser.java index dc252f2e423..906b73c8a88 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/ISourceCodeParser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/ISourceCodeParser.java @@ -10,8 +10,9 @@ *******************************************************************************/ package org.eclipse.cdt.core.dom.parser; -import org.eclipse.cdt.core.dom.ast.ASTCompletionNode; +import org.eclipse.cdt.core.dom.ast.IASTCompletionNode; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; +import org.eclipse.cdt.core.parser.ParseError; /** * Interface for an AST source code parser. @@ -49,11 +50,11 @@ public interface ISourceCodeParser { public boolean encounteredError(); /** - * Compute an {@link ASTCompletionNode} for code completion. + * Compute an {@link IASTCompletionNode} for code completion. * @return a completion node or <code>null</code> if none could be computed * * @throws ParseError if parsing has been cancelled or for other reasons */ - public ASTCompletionNode getCompletionNode(); + public IASTCompletionNode getCompletionNode(); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/c/AbstractCLanguage.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/c/AbstractCLanguage.java index 55a85168011..bbfe685bede 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/c/AbstractCLanguage.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/c/AbstractCLanguage.java @@ -17,7 +17,7 @@ import java.util.List; import java.util.Set; import org.eclipse.cdt.core.dom.ICodeReaderFactory; -import org.eclipse.cdt.core.dom.ast.ASTCompletionNode; +import org.eclipse.cdt.core.dom.ast.IASTCompletionNode; import org.eclipse.cdt.core.dom.ast.IASTName; import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; @@ -27,8 +27,8 @@ import org.eclipse.cdt.core.dom.parser.IScannerExtensionConfiguration; import org.eclipse.cdt.core.dom.parser.ISourceCodeParser; import org.eclipse.cdt.core.index.IIndex; import org.eclipse.cdt.core.model.AbstractLanguage; -import org.eclipse.cdt.core.model.IContributedModelBuilder; import org.eclipse.cdt.core.model.ICLanguageKeywords; +import org.eclipse.cdt.core.model.IContributedModelBuilder; import org.eclipse.cdt.core.model.ITranslationUnit; import org.eclipse.cdt.core.parser.CodeReader; import org.eclipse.cdt.core.parser.IParserLogService; @@ -98,7 +98,7 @@ public abstract class AbstractCLanguage extends AbstractLanguage implements ICLa return ast; } - public ASTCompletionNode getCompletionNode(CodeReader reader, IScannerInfo scanInfo, + public IASTCompletionNode getCompletionNode(CodeReader reader, IScannerInfo scanInfo, ICodeReaderFactory fileCreator, IIndex index, IParserLogService log, int offset) throws CoreException { IScanner scanner= createScanner(reader, scanInfo, fileCreator, log); @@ -108,10 +108,7 @@ public abstract class AbstractCLanguage extends AbstractLanguage implements ICLa // Run the parse and return the completion node parser.parse(); - ASTCompletionNode node= parser.getCompletionNode(); - if (node != null) { - node.count= scanner.getCount(); - } + IASTCompletionNode node= parser.getCompletionNode(); return node; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/cpp/AbstractCPPLanguage.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/cpp/AbstractCPPLanguage.java index 766d3410972..f4a0f98f543 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/cpp/AbstractCPPLanguage.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/parser/cpp/AbstractCPPLanguage.java @@ -17,7 +17,7 @@ import java.util.List; import java.util.Set; import org.eclipse.cdt.core.dom.ICodeReaderFactory; -import org.eclipse.cdt.core.dom.ast.ASTCompletionNode; +import org.eclipse.cdt.core.dom.ast.IASTCompletionNode; import org.eclipse.cdt.core.dom.ast.IASTName; import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; @@ -97,7 +97,7 @@ public abstract class AbstractCPPLanguage extends AbstractLanguage implements IC return ast; } - public ASTCompletionNode getCompletionNode(CodeReader reader, IScannerInfo scanInfo, + public IASTCompletionNode getCompletionNode(CodeReader reader, IScannerInfo scanInfo, ICodeReaderFactory fileCreator, IIndex index, IParserLogService log, int offset) throws CoreException { IScanner scanner= createScanner(reader, scanInfo, fileCreator, log); scanner.setContentAssistMode(offset); @@ -106,10 +106,7 @@ public abstract class AbstractCPPLanguage extends AbstractLanguage implements IC // Run the parse and return the completion node parser.parse(); - ASTCompletionNode node= parser.getCompletionNode(); - if (node != null) { - node.count= scanner.getCount(); - } + IASTCompletionNode node= parser.getCompletionNode(); return node; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java index 6bb1731b037..ac48f4cd9bf 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java @@ -19,6 +19,7 @@ import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression; import org.eclipse.cdt.core.dom.ast.IASTBreakStatement; import org.eclipse.cdt.core.dom.ast.IASTCaseStatement; import org.eclipse.cdt.core.dom.ast.IASTCastExpression; +import org.eclipse.cdt.core.dom.ast.IASTCompletionNode; import org.eclipse.cdt.core.dom.ast.IASTCompoundStatement; import org.eclipse.cdt.core.dom.ast.IASTConditionalExpression; import org.eclipse.cdt.core.dom.ast.IASTContinueStatement; @@ -147,7 +148,7 @@ public abstract class AbstractGNUSourceCodeParser implements ISourceCodeParser { * * @see org.eclipse.cdt.internal.core.dom.parser.ISourceCodeParser#getCompletionNode() */ - public ASTCompletionNode getCompletionNode() { + public IASTCompletionNode getCompletionNode() { return completionNode; } |